Hapttic alternatives and similar software solutions
Based on the "API Management" category.
Alternatively, view Hapttic alternatives based on common mentions on social networks and blogs.
9.9 9.9 Hapttic VS Postwoman👽 Open source API development ecosystem https://hoppscotch.io
9.8 9.9 Hapttic VS HasuraBlazing fast, instant realtime GraphQL APIs on your DB with fine grained access control, also trigger webhooks on database events.
8.9 7.2 Hapttic VS API PlatformCreate REST and GraphQL APIs, scaffold Jamstack webapps, stream changes in real-time.
8.9 9.2 Hapttic VS TykTyk Open Source API Gateway written in Go, supporting REST, GraphQL, TCP and gRPC protocols
8.3 6.9 Hapttic VS KrakenDUltra performant API Gateway with middlewares. A project hosted at The Linux Foundation
5.6 5.7 Hapttic VS PizzlyThe simplest, fastest way to integrate your app with an OAuth API 😋
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Hapttic or a related project?
What is this good for?
- You want to run some code in response to a webhook, like a github push.
- You have some code on your Raspberry Pi that you want to run from work (great in combination with ngrok).
- That's pretty much it.
How does it work?
Hapttic listens for incoming HTTP connections. When it receives a connection, it dumps all relevant data (headers, path, parameters, the body and other stuff) into a JSON object and calls a bash script with this object as its parameters.
Isn't this just a reinvention of CGI?
The basic idea is pretty similar. The main advantage of hapttic is ease of setup with a simple Docker image that lets you quickly connect a shell script to a http endpoint.
Show me an example
First, create a request handler at
Then run the following command to spin up the docker container that runs hapttic:
docker run --rm -p 8080:8080 -v ~/hapttic_request_handler.sh:/hapttic_request_handler.sh --name hapttic jsoendermann/hapttic -file "/hapttic_request_handler.sh"
open http://localhost:8080 to see the output of your script.
Show me a more realistic example
REQUEST=$1 SECRET_TOKEN=$(jq -r '.Header."X-My-Secret"' <(echo $REQUEST)) if [[ "$SECRET_TOKEN" != "SECRET" ]]; then echo "Incorrect secret token" exit -1 fi curl https://www.example.com/api/call/in/response/to/webhook
This request handling script can be run with
curl -H "X-My-Secret: SECRET" http://localhost:8080
jsoendermann/hapttic Dockerfile includes
curl, if you need any other command in your request handling script, you should create your own image.
The Request JSON object
The JSON object your request handling script gets called with is a subset of Go's
http.Request. It's defined in hapttic.go as
marshallableRequest. For documentation on http.Request, see the official net/http page.
You can add encryption by putting an nginx proxy in front of it with a docker-compose file like so:
version: '3' volumes: vhost: html: services: nginx-proxy: restart: always image: jwilder/nginx-proxy ports: - 80:80 - 443:443 volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - /var/certs:/etc/nginx/certs:ro - vhost:/etc/nginx/vhost.d - html:/usr/share/nginx/html labels: - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true" letsencrypt-nginx-proxy-companion: restart: always image: jrcs/letsencrypt-nginx-proxy-companion volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /var/certs:/etc/nginx/certs:rw - vhost:/etc/nginx/vhost.d - html:/usr/share/nginx/html hapttic: restart: always image: jsoendermann/hapttic environment: - VIRTUAL_HOST=hapttic.your.domain.com # Replace this - LETSENCRYPT_HOST=hapttic.your.domain.com # Replace this - [email protected] # Replace this volumes: - /my-request-handler.sh:/hapttic_request_handler.sh # Replace this command: ["-file", "/hapttic_request_handler.sh"] depends_on: - nginx-proxy - letsencrypt-nginx-proxy-companion