Running API tests you may be tempted to open PostMan or another API client, did you know, you can run HTTP requests from inside PhpStorm directly?
When developing a new API, you will want to run the API endpoints. Being able to run them without leaving PhpStorm speeds up your workflow.
To start a request file, you can either select a HTTP Request
file when using the new file or create a new scratch file.
For a scratch file select the HTTP Request
type.
In either case a file ending in .http
for example scratch.http
You can name the file anything you like and have multiple files.
The difference between having
.http
files in your projects and a scratch file is a scratch file is only stored in your.idea
folder and not inside your project files, (outside of version control.
Demo API
Throughout this post, I will be using a sample public API https://reqres.in/
Request Format
To create a request enter the type of request (GET, POST, PUT, PATCH, DELETE) followed by the URL to fetch.
You can also set headers by typing them in the format of key:value
If you need to pass through a body then type that out with a line break in a json format.
Use ###
to separate each request.
Method Request-URI HTTP-Version
Header-field: Header-value
Request-Body
###
Get Request
To create a GET
request type GET followed by the URL to fetch.
You can also set headers by typing them in the format of
key:value
GET https://reqres.in/api/users
Press the play button to the left of the request to run. This executes the request and shows the API response.
POST Request
In this example, I will create a new user by sending a POST request to the URL with a payload containing a name and job.
POST https://reqres.in/api/users
{
"name": "morpheus",
"job": "leader"
}
PATCH/PUT Request
In this example, I will update a user by sending a PATCH request to the URL with a payload containing a name and job.
PUT can also be used
PATCH https://reqres.in/api/users/2
{
"name": "joe"
}
Delete Request
In this example, I will delete a user by sending a DELETE request to the URL.
DELETE https://reqres.in/api/users/2
Authorization header
If you need to authenticate with an API say in the format of a bearer token this is done by passing in an authorization header:
GET http://domain.com/v1.0/contacts
Accept: application/json
Content-Type: application/json
Authorization: Bearer 45|vAc8...
For more details read the official docs