httpx is a CLI to execute requests from JetBrains Http File.
- 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
- Mac :
brew install servicex-sh/tap/httpx
- Other platform: download binary from https://github.com/servicex-sh/httpx/releases
- JetBrains IDEs plugin: https://plugins.jetbrains.com/plugin/18807-httpx-requests
- Neovim plugin: https://github.com/servicex-sh/httpx.vim
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:[email protected]
Host: tls://smtp.gmail.com:587
Authorization: Basic [email protected]:google_app_password
From: [email protected]
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.
- 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 URL format: mailto:[email protected][email protected]
- Gmail: please use App Password from https://support.google.com/accounts/answer/185833?p=InvalidSecondFactor
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
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
- Name request with
#@name myname
: you can invoke request withhttpx 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
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
- docker-compose.yml: MQTT/1883, Stomp/61613, RabbitMQ/5672, SMTP/1025, Redpanda/9092
- httpbin: HTTP test https://httpbin.org/
- grpcbin: gRPC test https://grpcb.in/
- GraphQLZero: https://graphqlzero.almansi.me/ endpoint: https://graphqlzero.almansi.me/api
- Ethereal Email: Ethereal is a fake SMTP service for email sending test https://ethereal.email/
- JetBrains HTTP client: https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html
- http-request-in-editor-spec: https://github.com/JetBrains/http-request-in-editor-spec/blob/master/spec.md
- Awaitility: small Java DSL for synchronizing asynchronous operations https://github.com/awaitility/awaitility
- RSocket: https://rsocket.io/
- gRPCurl: https://github.com/fullstorydev/grpcurl
- picocli: https://picocli.info/
- GraalVM: https://www.graalvm.org/
- UPX: Ultimate Packer for eXecutables - https://upx.github.io/
- type-detecting-hints-for-third-party-libraries: https://github.com/joshlong/type-detecting-hints-for-third-party-libraries
- IANA Message Headers: https://www.iana.org/assignments/message-headers/message-headers.xhtml
- MailCatcher: https://github.com/sj26/mailcatcher/