https://github.com/tj/burl
better curl(1) through augmentation
https://github.com/tj/burl
Last synced: 9 months ago
JSON representation
better curl(1) through augmentation
- Host: GitHub
- URL: https://github.com/tj/burl
- Owner: tj
- Created: 2012-06-23T00:17:17.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2013-02-04T22:35:09.000Z (almost 13 years ago)
- Last Synced: 2025-03-28T05:06:16.239Z (10 months ago)
- Language: Shell
- Homepage:
- Size: 134 KB
- Stars: 136
- Watchers: 4
- Forks: 11
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- Changelog: History.md
Awesome Lists containing this project
README
# Better curl(1)
`burl(1)` is a tiny shell script augmenting `curl(1)` with some helpful shortcuts.
$ POST '{"title":"better curl(1)"}' /todo/item
## Installation
$ make install
## Optional hostname
By default `burl(1)` will assume "http://localhost:3000", however you
can alter this default by exporting `BURL` in your terminal session or `.profile`:
```
$ export BURL=http://site-im-testing.com
$ burl /pathname
```
Or like usual you can specify a full url:
```
$ burl http://google.com
```
## -j, --json DATA
__POST__ data as "Content-Type: application/json":
```
$ burl -j {"name":"tobi"} /user
```
## HTTP verbs
Instead of the typical `-X DELETE` verb usage with `curl(1)`, you may use
the verbs directly, for example:
```
$ burl PATCH -d 'email=tobi@learnboost.com' /user/12
$ burl DELETE /users
```
## JSON request bodies
Usually when you want to request with some JSON you do something like:
```
$ curl -X PATCH -d '{"name":"tobi"}' -H "Content-Type: application/json" http://localhost:3000/user/12
```
With `burl(1)` you can simply add a JSON array or object after the HTTP verb:
```
$ burl PATCH '{"name":"tobi"}' /user/12
$ burl POST [1,2,3] /numbers
```
## JSON requests from files
To issue a request with the contents of `./some.json`, instead
of writing:
```
$ curl --data @some.json -H "Content-Type: application/json" http://localhost:3000/
```
Simply invoke:
```
$ POST @some.json /
```
## Expressive header fields
With `burl(1)` you can define header fields without `-H`:
```
$ burl If-None-Match: etag /users
$ burl If-None-Match: etag Accept: application/json /users
```
## Accept shorthand
Currently `.json`, `.text` and `.html` shorthands are
available and set the Accept header field for you:
```
$ burl /users
$ burl /users .json
$ burl /users .text
$ burl /users .html
```
## Extras
* Added support for prettyjson. It needs python and json.tool module.
## Aliases
Try these aliases if you want to get fancy:
```
alias GET='burl GET'
alias HEAD='burl -I'
alias POST='burl POST'
alias PUT='burl PUT'
alias PATCH='burl PATCH'
alias DELETE='burl DELETE'
alias OPTIONS='burl OPTIONS'
```