Skip to content

servicex-sh/httpx

Repository files navigation

httpx: CLI for run http file

httpx is a CLI to execute requests from JetBrains Http File.

Request types supported by httpx

  • HTTP REST
  • PUB/SUB - Apache Kafka/Redpanda, Apache Pulsar, RabbitMQ, NATS, Redis, MQTT, AMQP, Stomp, ZeroMQ
  • gRPC
  • RSocket
  • Apache Dubbo
  • Sofa RPC
  • Email sending by SMTP
  • GraphQL over HTTP/WebSocket/RSocket
  • Memcache: set/get/delete
  • Redis: set/hmset/eval
  • msgpack-rpc: with Neovim support
  • json-rpc: HTTP and TCP transports support
  • Cloud Open API: AWS and Aliyun

How to install?

How to use?

Create index.http file with following code, then chmod u+x index.http

#!/usr/bin/env httpx --httpfile

### get my internet ip
#@name myip
GET https://httpbin.org/ip

### inspection http post
#@name post
POST https://httpbin.org/post
Content-Type: application/json

[ 1 ]

### RSocket Request
#@name request
RSOCKET com.example.UserService.findById
Host: 127.0.0.1:42252
Content-Type: application/json

1

### grpc call SayHello
#@name SayHello
GRPC localhost:50052/org.mvnsearch.service.Greeter/SayHello

{
  "name": "Jackie"
}

### graphql query
#@name query
GRAPHQL http://localhost:8080/graphql
Content-Type: application/graphql

query { hello }

### send an email by Gmail
#@name mail
MAIL mailto:demo@example.com
Host: tls://smtp.gmail.com:587
Authorization: Basic your_name@gmail.com:google_app_password
From: your_name@gmail.com
Subject: e-nice to meet you
Content-Type: text/plain

Hi Master:
  this is testing email.

Best regards
Yours sincerely Zombie

Then input httpx myip or ./index.http myip to invoke request.

Protocols Support

  • HTTP Request
  • RSocket Request
  • GRPC Request: you should install grpcurl
  • GraphQL support: Query, Mutation and Subscribe on HTTP and WebSocket(graphql-ws)
  • EMAIL: send email by SMTP
  • PUB/SUB: pub/sub support for Kafka, RabbitMQ/ActiveMQ, Nats, Redis, MQTT, Stomp and Aliyun MNS/EventBridge.

Email sending

Email URL format: mailto:name@email.com?cc=name2@email.com

oh-my-zsh integration for shell completion

Please create ~/.oh-my-zsh/custom/plugins/httpx with following code, then add httpx to plugins in .zshrc file.

#compdef httpx
#autload

local subcmds=()

while read -r line ; do
   if [[ ! $line == Available* ]] ;
   then
      subcmds+=(${line/[[:space:]]*\#/:})
   fi
done < <(httpx --summary)

_describe 'command' subcmds

JavaScript Code test

JetBrains HTTP Client uses JavaScript ECMAScript 5.1 as response handler for test. httpx uses Node.js as JS engine, and you should install Node.js first.

### hello ip
GET https://httpbin.org/ip

> {%
    client.test("Request executed successfully", function() {
        client.log(response.status);
        client.log(response.contentType);
        client.log(response.body);
    });
%}

Attentions:

  • You should know the difference between ECMAScript 5.1 and Node.js
  • JavaScript code test is available for HTTP, gRPC, RSocket, Dubbo and other protocols with httpx

Tips

  • Name request with #@name myname: you can invoke request with httpx myname
  • Describe request with ### request description here
  • Generate http file from openapi: please refer OpenAPI Generator openapi-generator-cli generate -i https://api.opendota.com/api -g jetbrains-http-client -o dotaClient

How to build from source?

httpx uses Toolchains Maven Plugin to build project, and you don't need to install GraalVM first, and GraalVM will be installed in ~/.m2/jdks.

./mvnw -Pnative -DskipTests clean package

Development setup

References

About

httpx - CLI to test HTTP/gRPC/RSocket/Kafka... services by HTTP DSL

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages