Piwo
About
Piwo is a friendly command-line tool to do HTTP request to a API server. Sending request body as JSON.
Installation
deno install -A --import-map=https://deno.land/x/piwo/import_map.json -n piwo --no-check https://deno.land/x/piwo/cli.tsThe permissions that Piwo uses are:
- –allow-net
- –allow-read
- –allow-write
- –allow-env
Updating Piwo
deno install -f -r -A --import-map=https://deno.land/x/piwo/import_map.json -n piwo --no-check https://deno.land/x/piwo/cli.tsCheck if Piwo has been updated
piwo --versionUsing without install
trex exec piwo [...args] or trex exec piwo@[version] [...args]Usage
Syntax
piwo [METHOD] [URL] [BODY]METHOD: must be uppercase and they can be GET, POST, PUT, PATCH and
DELETE. If you don’t send a method Piwo will make a GET (default) request.
URL: you can omit the protocol in the url (http or https).
BODY: the body is JSON (default).
Make a GET request
piwo GET https://api.github.com/A shortest way:
piwo api.github.comMake a POST, PATCH or PUT request sending a body/JSON
piwo POST localhost:3000/send_your_foo foo=barIf you need to send a value with spaces, use quotes.
piwo PATCH localhost:3000/update_your_foo foo="this is my bar"You can also send multiple values, just separing with spaces
piwo POST localhost:3000/signup username=foo password=barMake a DELETE request
piwo DELETE localhost:3000/your_foo/removeSendin a property with object value type
piwo POST localhost:3000/cli/registry cli={name=piwo description="your friendly HTTP cli tool"}Sending a property with array value type
piwo PATCH localhost:3000/cli/piwo tags=[typescript deno cli http]Send a form/body
You just need to add the –form flag
piwo --form POST localhost:3000/ search_query="foo bar"Run command usage
Create a request.json file in your project. The keys that piwo are expecting
from the file are names or aliases that can be called in the console, and this
aliases should have as value a config similar to the
fetch API
considering that it is not possible to execute javascript code in a json file
Example
{
"github": {
"method": "GET",
"url": "https://api.github.com"
}
}Run the next code in your command-line:
piwo run githubSend a JSON
{
"new-task": {
"method": "POST",
"url": "http://localhost:8080/task/",
"headers": {
"Content-Type": "application/json"
},
"body": {
"name": "read a json file",
"description": "piwo should read a json file to simplify a request"
}
}
}piwo run new-taskSend a Form
{
"foo:form": {
"method": "POST",
"url": "http://localhost:8080/",
"headers": {
"Content-Type": "application/x-www-form-urlencoded"
},
"body": {
"foo": "bar"
}
}
}piwo run foo:formContent-Type value can be multipart/form-data;
Some nice tips
How URL argument works
When you’re doing a request you can omit the protocol, Piwo will make a request with https, if get not response then will try with the http protocol and then will output the response of the server or a msg that couldn’t connect when no server is found.
When you send the URL with protocol Piwo will not check the other protocol.
If you’re sure that the server is on http protocol, we recommend you to pass the protocol in the url, is faster because piwo will do a direct request with the procotol and will not check the https procotol.
If the url is a localhost, then will first try with HTTP.