
Httpie: A cURL alternative - minaandrawos
https://github.com/jakubroztocil/httpie
======
jimmahoney
It looks cool, but I don't really want to wait half a minute for it to do
anything.

    
    
      $ time curl cs.marlboro.college
      <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
      <html><head>
      <title>301 Moved Permanently</title>
      </head><body>
      <h1>Moved Permanently</h1>
      <p>The document has moved <a href="https://cs.marlboro.college  /">here</a>.</p>
      <hr>
      <address>Apache/2.4.18 (Ubuntu) Server at cs.marlboro.college Port 80</address>
      </body></html>
    
      real	0m0.269s
      user	0m0.004s
      sys	0m0.005s
      
      $ time http cs.marlboro.college
      HTTP/1.1 301 Moved Permanently
      Connection: Keep-Alive
      Content-Length: 321
      Content-Type: text/html; charset=iso-8859-1
      Date: Sat, 27 Jan 2018 18:04:17 GMT
      Keep-Alive: timeout=5, max=100
      Location: https://cs.marlboro.college/
      Server: Apache/2.4.18 (Ubuntu)
      
      <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
      <html><head>
      <title>301 Moved Permanently</title>
      </head><body>
      <h1>Moved Permanently</h1>
      <p>The document has moved <a href="https://cs.marlboro.college/">here</a>.</p>
      <hr>
      <address>Apache/2.4.18 (Ubuntu) Server at cs.marlboro.college Port 80</address>
      </body></html>
    
      real	0m30.553s
      user	0m0.437s
      sys	0m0.052s

~~~
GhostVII
On my computer httpie took 0.775s, and curl took 0.105s, so not much slower.

~~~
jbverschoor
7 times

------
GhostVII
If you like httpie, http-prompt is a good add on for it, it lets you navigate
through a rest API as if it is a filesystem (using cd for navigation), and
lets you configure the arguments to pass to httpie for future requests.

------
tyingq
Depending on what you are doing, Perl's LWP::Simple[1] and plain old wget[2]
are sometimes handy.

[1]
[http://www.perlmonks.org/?node_id=168684](http://www.perlmonks.org/?node_id=168684)

[2]
[http://www.editcorp.com/personal/lars_appel/wget/v1/wget_7.h...](http://www.editcorp.com/personal/lars_appel/wget/v1/wget_7.html)

------
nlawalker
I'm just starting to get into Python and using the command line more after a
lifetime of mostly sticking to GUIs, and I'm really digging the "software for
humans" vibe I'm finding in a few places. HTTPie is a good example, as is
ncdu, which I just discovered this morning. Also anything by Kenneth Reitz.

The command line can be great for commanding, when it's done right, but it's
not so great for most kinds of visualization, so CLI software that recognizes
that and tries to compensate really helps.

------
aorth
I use httpie to view request and response headers. Very handy when you want to
check something without worrying that a browser is caching something for some
reason (like a redirect).

    
    
      $ http --print Hh http://news.ycombinator.com

------
ajb257
HTTPie is awesome, the only thing to watch out for is if you use it for large
JSON responses, it can take a while to parse, process and display the
response. In that case cURL is still handier, but HTTPie is the tool I
generally reach for

------
ippa
Love Httpie! Such an awesome cli with easy to remember, natural syntax. When
installing on new boxes I wish it wasn't depending on python though.

------
parmesan
Httpie is my version of Postman and similar services, curl for humans is spot
on imho.

------
jenhsun
wuzz is nice too.
[https://github.com/asciimoo/wuzz](https://github.com/asciimoo/wuzz)

------
CardenB
HTTPie is great! I’ve replaced curl with it in my daily workflow

------
pimlottc
Could we all just agree to stop using the adjective “modern”? It’s such a
weasal word. If there are advantages to your program, describe them. Simply
being “newer” or in the currently trendy style does not make it automatically
better.

I’m not saying that this is a bad project. But “modern” doesn’t tell me
anything about why I might want to use it.

~~~
ralfn
Well, i use it daily, because it has:

\- much more sane command line syntax

\- automatic formatting and highlighting of json/xml/html

\- automatically show received headers

\- reverts to unproccessed output when redirected

PROTIP: use 'cat' to type the body manually:

    
    
         cat | http post https://someapi.com/somenendpoint Authorization:sometoken
    

You can then start typing the message body. When done, press ctrl+d (EOF) and
the request will send and the reply will be printed.

And if you already have the body in a separate file, just pipe it through:

    
    
        cat mybody.json | http post https://someapi.com/somenendpoint Authorization:sometoken

~~~
derimagia
Don't need cat for the last one, can you redirected input

    
    
      http post https://someapi.com/somenendpoint Authorization:sometoken < mybody.json

~~~
BenjiWiebe
And if you are like me, you use cat because it can go first in the command
line... Until I discovered that file redirects can too!

<mybody.json http post
[https://someapi.com/somenendpoint](https://someapi.com/somenendpoint)
Authorization:sometoken

