A lightweight HTTP testing and debugging service built on Fastly Compute@Edge. Inspired by httpbin, HTTP-ME provides endpoints for testing HTTP clients, debugging requests, and simulating various HTTP scenarios.
π Live Service: https://http-me.edgecompute.app/
- β Status Code Testing: Return any HTTP status code
- π Request Inspection: Echo back request headers, body, and metadata
- π IP Geolocation: Get geolocation data for any IP address
- π¨ Static Assets: Serve static files and interactive Swagger UI
- π Tarpit Mode: Simulate slow responses for timeout testing
- π§ Header Utilities: Test custom header handling
- π‘ CORS Support: Built-in CORS support for cross-origin requests
Return a specific HTTP status code:
# Get a 404 Not Found
curl -i https://http-me.edgecompute.app/status/404
# Get a 302 Redirect
curl -i https://http-me.edgecompute.app/status/302
# Get a 500 Internal Server Error
curl -i https://http-me.edgecompute.app/status/500Echo back all request data (headers, body, query params):
# Basic request inspection
curl https://http-me.edgecompute.app/anything/test
# With query parameters
curl https://http-me.edgecompute.app/anything/mypath?foo=bar&baz=qux
# With request body (POST)
curl -X POST https://http-me.edgecompute.app/anything/test \
-H "Content-Type: application/json" \
-d '{"key":"value"}'Set a custom status code using headers at any path:
curl -i https://http-me.edgecompute.app/any/path \
-H 'endpoint:status=302'Get geolocation data for your IP or a specific IP:
# Get data for your own IP
curl https://http-me.edgecompute.app/client_ip_data
# Get data for a specific IP
curl https://http-me.edgecompute.app/client_ip_data?ip=8.8.8.8Echo back custom headers prefixed with x-:
curl https://http-me.edgecompute.app/utilities/set_headers \
-H "x-custom-header: my-value" \
-H "x-another: test"| Endpoint | Description | Example |
|---|---|---|
/ |
Swagger UI documentation | curl https://http-me.edgecompute.app/ |
/status/{code} |
Return specified HTTP status code | curl -i https://http-me.edgecompute.app/status/404 |
/anything/{path} |
Echo request data as JSON | curl https://http-me.edgecompute.app/anything/test |
/client_ip_data |
Get IP geolocation data | curl https://http-me.edgecompute.app/client_ip_data |
/utilities/set_headers |
Echo custom headers | curl https://http-me.edgecompute.app/utilities/set_headers -H "x-test: value" |
/static-assets/{file} |
Serve static files | curl https://http-me.edgecompute.app/static-assets/openapi-spec.json |
Simulate slow responses for testing timeouts:
curl -H 'endpoint:tarpit=1' https://http-me.edgecompute.app/status/200This will send the response in 100-byte chunks with a 1-second delay between each chunk.
Alternative way to specify status codes:
curl -i 'https://http-me.edgecompute.app/any/path?status=404'- Rust 1.83.0 or later
- Fastly CLI
-
Clone the repository:
git clone https://github.com/BrooksCunningham/http-me-rust.git cd http-me-rust -
Install dependencies:
rustup target add wasm32-wasip1 cargo build
-
Run locally:
fastly compute serve
-
Test locally:
curl http://localhost:7676/status/200 curl http://localhost:7676/anything/test
See CONTRIBUTING.md for detailed development guidelines.
This service is automatically deployed to Fastly Compute@Edge via GitHub Actions when changes are pushed to the main branch.
- Test & Build: Code is compiled and tested
- WAF Testing: Tests run through Next-Gen WAF
- Deploy: Service is deployed to Fastly edge network
- KV Store Update: Static assets are uploaded to KV Store
See the GitHub Actions workflow in .github/workflows/test_build_deploy.yaml for details.
Built on Fastly Compute@Edge, this service runs at the edge for:
- β‘ Low Latency: Responses from the nearest edge location
- π Global Distribution: Available worldwide
- π Security: Built-in DDoS protection and WAF
- π Scalability: Automatically scales with traffic
- Language: Rust (compiled to WASM)
- Platform: Fastly Compute@Edge
- Storage: Fastly KV Store for static assets
- CI/CD: GitHub Actions
- HTTP Client Testing: Test your HTTP client implementation
- API Development: Debug requests during development
- Load Testing: Generate predictable responses for load tests
- Integration Testing: Mock various HTTP scenarios
- Network Debugging: Inspect what your application sends
- Education: Learn about HTTP status codes and headers
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch
- Make your changes with tests
- Submit a pull request
Please see SECURITY.md for guidance on reporting security-related issues.
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by httpbin
- Built with Fastly Compute@Edge
- Powered by Rust
Maintainer: Brooks Cunningham
Repository: github.com/BrooksCunningham/http-me-rust