xh
est un outil convivial et rapide pour envoyer des demandes HTTP. Il réimplique autant que possible de l'excellente conception de Httpie, en mettant l'accent sur les performances améliorées.
curl -sfL https://raw.githubusercontent.com/ducaale/xh/master/install.sh | sh
iwr -useb https://raw.githubusercontent.com/ducaale/xh/master/install.ps1 | iex
OS | Méthode | Commande |
---|---|---|
N'importe lequel | Cargaison* | cargo install xh --locked |
N'importe lequel | Huber | huber install xh |
Android (Termux) | pkg | pkg install xh |
Android (Magisk / Kernelsu) | Mmrl ** | mmrl install xhhttp |
Alpine Linux | apk *** | apk add xh |
Arch Linux | Pacman | pacman -S xh |
Debian et Ubuntu | Apte**** | sudo apt install xh |
FreeBSD | Sport de nouveau | pkg install xh |
Netbsd | pkgsrc | pkgin install xh |
Linux et macOS | Nixpkgs | nix-env -iA nixpkgs.xh |
Linux et macOS | Flox | flox install xh |
Linux et macOS | Homebrew | brew install xh |
Linux et macOS | Ermite | hermit install xh |
macos | Macport | sudo port install xh |
Fenêtre | Scoop | scoop install xh |
Fenêtre | Chocolaté | choco install xh |
Fenêtre | Ailier | winget add ducaale.xh |
* Assurez-vous que vous avez installé Rust 1.74 ou plus tard
** Vous devrez installer la CLI MMRL
*** Le package XH est disponible en bord et sera en v3.17 +. Il est construit avec Native-TLS uniquement.
**** Vous devrez ajouter le référentiel apt de https://apt.cli.rs/
La page de libération contient des binaires prédéfinis pour Linux, MacOS et Windows.
Usage: xh [OPTIONS] <[METHOD] URL> [REQUEST_ITEM]... Arguments: <[METHOD] URL> The request URL, preceded by an optional HTTP method [REQUEST_ITEM]... Optional key-value pairs to be included in the request. Options: -j, --json (default) Serialize data items from the command line as a JSON object -f, --form Serialize data items from the command line as form fields --multipart Like --form, but force a multipart/form-data request even without files --raw <RAW> Pass raw request data without extra processing --pretty <STYLE> Controls output processing [possible values: all, colors, format, none] --format-options <FORMAT_OPTIONS> Set output formatting options -s, --style <THEME> Output coloring style [possible values: auto, solarized, monokai, fruity] --response-charset <ENCODING> Override the response encoding for terminal display purposes --response-mime <MIME_TYPE> Override the response mime type for coloring and formatting for the terminal -p, --print <FORMAT> String specifying what the output should contain -h, --headers Print only the response headers. Shortcut for --print=h -b, --body Print only the response body. Shortcut for --print=b -m, --meta Print only the response metadata. Shortcut for --print=m -v, --verbose... Print the whole request as well as the response --debug Print full error stack traces and debug log messages --all Show any intermediary requests/responses while following redirects with --follow -P, --history-print <FORMAT> The same as --print but applies only to intermediary requests/responses -q, --quiet... Do not print to stdout or stderr -S, --stream Always stream the response body -o, --output <FILE> Save output to FILE instead of stdout -d, --download Download the body to a file instead of printing it -c, --continue Resume an interrupted download. Requires --download and --output --session <FILE> Create, or reuse and update a session --session-read-only <FILE> Create or read a session without updating it form the request/response exchange -A, --auth-type <AUTH_TYPE> Specify the auth mechanism [possible values: basic, bearer, digest] -a, --auth <USER[:PASS] | TOKEN> Authenticate as USER with PASS (-A basic|digest) or with TOKEN (-A bearer) --ignore-netrc Do not use credentials from .netrc --offline Construct HTTP requests without sending them anywhere --check-status (default) Exit with an error status code if the server replies with an error -F, --follow Do follow redirects --max-redirects <NUM> Number of redirects to follow. Only respected if --follow is used --timeout <SEC> Connection timeout of the request --proxy <PROTOCOL:URL> Use a proxy for a protocol. For example: --proxy https:http://proxy.host:8080 --verify <VERIFY> If "no", skip SSL verification. If a file path, use it as a CA bundle --cert <FILE> Use a client side certificate for SSL --cert-key <FILE> A private key file to use with --cert --ssl <VERSION> Force a particular TLS version [possible values: auto, tls1, tls1.1, tls1.2, tls1.3] --https Make HTTPS requests if not specified in the URL --http-version <VERSION> HTTP version to use [possible values: 1.0, 1.1, 2, 2-prior-knowledge] --resolve <HOST:ADDRESS> Override DNS resolution for specific domain to a custom IP --interface <NAME> Bind to a network interface or local IP address -4, --ipv4 Resolve hostname to ipv4 addresses only -6, --ipv6 Resolve hostname to ipv6 addresses only -I, --ignore-stdin Do not attempt to read stdin --curl Print a translation to a curl command --curl-long Use the long versions of curl's flags --help Print help -V, --version Print version Each option can be reset with a --no-OPTION argument.
Exécutez xh help
pour des informations plus détaillées.
xh
utilise la syntaxe de demande de Httpie pour définir les en-têtes, le corps de demande, la chaîne de requête, etc.
=
/ :=
pour définir les champs JSON ou Form du corps de demande ( =
pour les chaînes et :=
pour les autres types JSON).
==
Pour ajouter des chaînes de requête.
@
pour inclure des fichiers dans les demandes en plusieurs parties, par exemple, [email protected]
ou [email protected];type=image/jpeg;filename=goodbye.jpg
.
:
pour ajouter ou supprimer des en-têtes connection:keep-alive
ou connection:
.
;
pour inclure des en-têtes avec des valeurs vides, par exemple header-without-value;
.
Un préfixe @
peut être utilisé pour lire une valeur à partir d'un fichier. Par exemple: x-api-key:@api-key.txt
.
Le corps de demande peut également être lu à partir de l'entrée standard ou à partir d'un fichier utilisant @filename
.
Pour construire un objet JSON complexe, un chemin JSON peut être utilisé comme une app[container][0][id]=090-5
. Pour plus d'informations sur cette syntaxe, reportez-vous à https://httpie.io/docs/cli/neted-json.
Semblable à HTTPIE, la spécification de la partie du schéma de l'URL de demande est facultative, et un colon leader fonctionne comme sténographie pour localhost. :8000
équivaut à localhost:8000
, et :/path
est équivalent à localhost/path
.
Les URL peuvent avoir un leader ://
qui permet de convertir rapidement une URL en une commande xh ou httpie valide. Par exemple, http://httpbin.org/json
devient http ://httpbin.org/json
.
xh http: // localhost: 3000 / users # résolve to http: // localhost: 3000 / usersxh localhost: 3000 / users # résoudre http: // localhost: 3000 / usersxh: 3000 / users # résout à http: // LocalHost: 3000 / Usersxh: / Users # Resolves to http: // localhost: 80 / usersxh example.com # résout à http: //example.comxh: //example.com # résout à http://example.com
xh
sera par défaut au schéma HTTPS si le nom binaire est l'un des xhs
, https
ou xhttps
. Si vous avez installé xh
via un gestionnaire de packages, xh
et xhs
devraient être disponibles par défaut. Sinon, vous devez en créer un comme ceci:
CD / PATH / TO / XH && ln -s ./xh ./xhs xh httpbin.org/get # résout à http://httpbin.org/getxhs httpbin.org/get # résout à https://httpbin.org/get
Si xh
est invoqué en tant que http
ou https
(en renommant le binaire), ou si la variable d'environnement XH_HTTPIE_COMPAT_MODE
est définie, elle s'exécutera en mode de compatibilité httpie. La seule différence de courant est que --check-status
n'est pas activé par défaut.
# Envoyer un GET Requestxh httpbin.org/json# Envoyer une demande de message avec le corps {"name": "Ahmed", "Age": 24} xh httpbin.org/post name = Ahmed Age: = 24 # Envoyer une demande de GET avec QueryString id = 5 & tri = truexh get httpbin.org/json id == 5 tri == true # envoyez une demande de get et incluez un en-tête nommé x-api-key avec la valeur 12345xh get httpbin.org/json x-api-key : 12345 # Envoyez une demande de poste avec le corps lu de stdin.echo "[1, 2, 3]" | XH Post httpbin.org/post# Envoyez une demande de put et tuyez le résultat à Lessxh put httpbin.org/put id: = 49 Âge: = 25 | Moins # Télécharger et enregistrer sur res.jsonxh -d httpbin.org/json -o res.json # Faites une demande avec un agent utilisateur personnalisé httpbin.org/get user-agent: foobar
Amélioration de la vitesse de démarrage.
Disponible comme un seul binaire lié statiquement facile à installer et à transporter.
Prise en charge HTTP / 2.
Traduction intégrée en Curl Commandes avec le drapeau --curl
.
Sortie courte, de style trichette de --help
. (Pour une sortie plus longue, passez help
.)
Toutes les fonctionnalités de Httpie ne sont pas mises en œuvre. (# 4)
Pas de système de plugin.
Immaturité générale. Httpie est ancienne et bien testée.
Pire documentation.
Curlie - Frontend à Curl qui ajoute la facilité d'utilisation de Httpie
httpie-go - client http de type httpie écrit en go
curl2httpie - convertir les arguments de commande entre Curl et Httpie