💾 Archived View for g.codelearn.me › 2017-10-22-restclient.gmi captured on 2023-06-16 at 16:25:54. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-01-29)

-=-=-=-=-=-=-

Restclient (Postman for Emacs)

Hi everyone.

Here is my notes about `restclient` that can help you to forget about `Postman` (which is cool as well).

Define the action

Here is the example:

#
# get all people from star wars
#
GET https://swapi.co/api/people

To define an action you need to start with a comment.

Then you need to set method (GET, POST, PUT and other) and the url of course.

Now you can execute the query. Press `C-c C-c` (CTRL+c twice) and new buffer (`*HTTP Response*`) with the result will be opened.

At the bottom of that buffer you can see response headers:

// GET https://swapi.co/api/people
// HTTP/1.1 200 OK
// Date: Sun, 22 Oct 2017 19:03:17 GMT
// Content-Type: application/json
// Transfer-Encoding: chunked
// Connection: keep-alive
// Allow: GET, HEAD, OPTIONS
// Vary: Accept, Cookie
// X-Frame-Options: SAMEORIGIN
// Etag: "d080408a4d656729b0f52a6feb0783ca"
// Via: 1.1 vegur
// Server: cloudflare-nginx
// CF-RAY: 3b1eb73cda7d63af-FRA
// Request duration: 1.663359s

Pretty simple, ha?

Set headers

To define headers you need to write them just below the URL definition:

#
# get all people from star wars
#
GET https://swapi.co/api/people
User-Agent: Emacs Restclient
Content-Type: application/json

Post payload

If you want to send data to the server you can define it right after empty line of the URL (or headers if exist) definition.

Here is an example from `restclient.el` repo.

#
# Post works too, entity just goes after an empty line. Same is for PUT.
#
POST https://jira.atlassian.com/rest/api/2/search
Content-Type: application/json

{
        "jql": "project = HSP",
        "startAt": 0,
        "maxResults": 15,
        "fields": [
                "summary",
                "status",
                "assignee"
        ]
}

What if I want to post a file?

It's also possible and it's pretty easy

#
# post a file
#
POST http://httpbin.org/post
Content-Type: text/plain

< /etc/hosts

You can even define variables

Variables are useful to define the host or test user credentials.

Here how you can define it.

:myvar = https://google.com

You can also use elisp to set a value

:myvar := (some (artbitrary 'elisp)

use `:variable-name` syntax to get the value of variable:

#
# use a variable
#
GET :myvar/imghp

Restclient.el is a great package you definitely should try. It allows you quickly explore or test the API without leaving the Emacs.

Try it <3