DEV Community

Cover image for No More postman just use cURL + vim =

No More postman just use cURL + vim =

Mahmoud Ashraf on August 20, 2020

Originally Published on my blog Postman one of the most popular API client tool, for send and view the response in the development environment. Bu...
Collapse
 
vlasales profile image
Vlastimil Pospichal • Edited

When you want change website, you need change all scripts. Why you don't inject main part of URL into all scripts as parameter?

My potential structure of this:

└── api
    └── todos
        ├── delete.sh
        ├── get.sh
        ├── get-by-user.sh
        ├── get-all.sh
        ├── patch.sh
        ├── post.sh
        └── put.sh

But still is too much repeated parts of this. Maybe one script with one switch?

Collapse
 
22mahmoud profile image
Mahmoud Ashraf

You can structure the files as you want.

to change the baseurl you can run

sed -in 's/https:\/\/jsonplaceholder.typicode.com/https:\/\/new_base_url.com/' api/todos/**/*.sh

or you can use vim-rest-console as some comments mentioned.

Collapse
 
gdledsan profile image
Edmundo Sanchez

The point is to make things easy and avoid havind to remember a bunch of things just to do somethin, this ifs the opposite of automation

Collapse
 
vonheikemen profile image
Heiker

I used to do something like this, but not as organize as you describe. Eventually it got a little messy so I ended up creating a cli tool for myself, I call it tinytina. Now I put the api info in a json file and call each endpoint with an "id".

tinytina --schema ./api-data.json --env dev run posts:list-all

I can even turn that into a curl/httpie command, so I can share it with others.

tinytina --schema ./api-data.json --env dev convert-to curl posts:list-all
Collapse
 
minhajuddin profile image
Khaja Minhajuddin

You could use vim VRC github.com/diepm/vim-rest-console , it allows you to store your requests in a file like http.rest

http://localhost:9200
POST /testindex/testtype
{
  "key": "new key",
  "value": "new value"|
}
Collapse
 
22mahmoud profile image
Mahmoud Ashraf

It has cool features, I'll give it a try.

Collapse
 
izifortune profile image
Fabrizio Fortunato • Edited

Interesting article and sparkle my interest to write a small function for this as you cannot really read a buffer with a command.

function M.Exec()
  lines = vim.fn.getline(1, '$')
  command = ''
  for key, val in pairs(lines) do .
    command = command .. val
  end
  output = vim.fn.systemlist(command)
  vim.api.nvim_command('rightbelow new')
  buf = vim.api.nvim_get_current_buf() 
  vim.api.nvim_buf_set_lines(buf, 0, -1, false, output)
end
return M

Forgot to mention you need to have the latest neovim to enjoy built in lua.

Collapse
 
nenitf profile image
Neni

I like this plugin for to do the requests

Collapse
 
22mahmoud profile image
Mahmoud Ashraf

I like that i can set base url and just set the end points, I'll give it a try.

Collapse
 
hemant profile image
Hemant Joshi

The main Reason why I use Postman rather then Curl+ vim...

  • it usually take 8-9 days to design a badass backend, so I worry about response and other thing, rather then using curl.Postman easy

  • Main
    I am a full stack developer, so I need to send the api request's multiple time, just like:
    Sigin Signout add to database delete etc etc..

Which requires each time auth, and sending data where post man saves the previous response in terms of Input and Output..

Sending Authorization, formdata etc etc is too easy by using postman

Also the saved requests make it easy to use and test..

Curl is also good, but Postman Makes live too easy..

Collapse
 
rvilela7 profile image
rvilela7

For me, I replaced it with VS Code and REST client extension

Collapse
 
sibliant profile image
Parker

Nice write-up. I like doing things like this in native vim. Why leave when you don't have to. Thanks!

Collapse
 
gdledsan profile image
Edmundo Sanchez

Well, I mean... The point of using Postman is to organize and to avoid dealing with Curl, and to have a pretty UI so you can just click things.

If I have to run away from postman (I use Insomnia nowdays), I would prefer using a testing framework like rspec or pytest so I can keep tjings documented and use a nicer request library.

Curl has always been the default go-to quick-for-testing sny api endpoint, jowever things can get dofficulot if you have to sign your requests like with AWS endpoints, where not even postman would bee a good alternative.

I guess my two cents here is: curl has always been there for you and always have been, but using it as a postman alternative has the potential to consume your time

Collapse
 
guha profile image
Arghya Guha

Great article Mahmoud. I also enjoyed using httpie though i still stick to Postman for the day to day.