blob: 2b68f28744d61f01ed5671f4e7798518c9b7fb1c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
---
category: tool
tool: httpie
contributors:
- ["AdaĆas Magdiel", "https://github.com/AdaiasMagdiel"]
filename: learn-httpie.sh
---
HTTPie is a powerful command-line HTTP client designed for easy interaction
with HTTP servers. It provides a simple and intuitive interface, making it an
excellent tool for developers, testers, and system administrators.
## Basic Usage
HTTPie follows a simple syntax: http [flags] [METHOD] URL [items].
```bash
http GET https://api.example.com/posts
```
You can print the request without sending it by using the `--offline` flag.
```bash
http --offline https://api.example.com/posts
```
### URL shortcuts for `localhost`
HTTPie supports a curl-like shorthand for localhost. For instance, `:3000`
expands to `http://localhost:3000`. If the port is omitted, it assumes port 80.
```bash
http :/users # http://localhost/users
http :5000/rss # http://localhost:5000/rss
```
### Optional GET and POST
If you don't specify the METHOD, the HTTPie will use:
- GET for requests without body
- POST for requests with body
```bash
http https://api.example.com/tags # GET tags
http https://api.example.com/tags title="Tutorial" slug="tutorial" # POST a new tag
```
## Querystring Parameters
If you're manually adding query string parameters in the terminal, try the
`param==value` syntax. It avoids shell escaping for & separators and
automatically URL-escapes special characters in parameter names and values.
This differs from parameters in the full URL, which HTTPie doesn't modify.
```bash
http https://api.example.com/search q==httpie per_page==20
```
## Sending Data
You can send data in various formats such as JSON, form data, or files.
### JSON Data
```bash
http POST https://api.example.com/posts title="Hello" body="World"
```
### Form Data
```bash
http -f POST https://api.example.com/submit name=John email=john@example.com
```
### Files
```bash
http --form POST https://api.example.com/upload file@/path/to/file.txt
```
## Headers and Authentication
HTTPie allows you to set headers and handle authentication easily.
### Headers
```bash
http GET https://api.example.com/posts Authorization:"Bearer Token" User-Agent:"HTTPie"
```
### Basic Authentication
```bash
http -a username:password GET https://api.example.com/protected
```
### Bearer Authentication
```bash
https -A bearer -a token https://api.example.com/admin
```
## Response Handling
HTTPie provides various options for handling responses.
```bash
http GET https://api.example.com/data Accept:application/json # Pretty Print JSON
http GET https://api.example.com/image --output image.png # Save Response to File
http --follow GET https://example.com # Follow Redirects
```
## Further Reading
- [Official Documentation](https://httpie.io/docs/cli)
- [GitHub](https://github.com/httpie)
|