Custom Responses
Customize HTTP responses with status codes, response sizes, compression, content types, and headers using HTTP headers or environment variables.
How It Works
graph TD
A[Receive Request] --> B{Check Headers/Env}
B --> C[Set Status Code]
B --> D[Set Response Size]
B --> E[Apply Compression]
B --> F[Set Content-Type]
B --> G[Add Custom Headers]
B --> H[Include Server Info]
C --> I[Generate Response]
D --> I
E --> I
F --> I
G --> I
H --> I
I --> J[Respond]
Custom Status Code
Override the default 200 status code.
- Header:
X-Echo-Status: 201 - Example:
curl -H "X-Echo-Status: 201" http://localhost:8080/
# Response: HTTP 201 Created
Response Size
Generate a response of specific size (bytes) with random data.
- Header:
X-Echo-Response-Size: 1024 - Env: N/A (header-only)
- Notes: Large sizes will return random bytes; content type mirrors request unless overridden.
- Example:
curl -H "X-Echo-Response-Size: 1024" http://localhost:8080/
# Response: 1KB of random data
Compression
Enable GZIP compression for responses.
- Header:
X-Echo-Compress: gzip - Example:
curl -H "X-Echo-Compress: gzip" --compressed http://localhost:8080/
# Response: GZIP-compressed body
Content-Type
Override the response Content-Type.
- Header:
X-Echo-Content-Type: application/xml - Default: Mirrors request
Content-Typeif present, elsetext/plain - Example:
curl -H "X-Echo-Content-Type: application/xml" http://localhost:8080/
# Response: Content-Type: application/xml
Custom Headers
Add or echo custom headers in responses.
- Headers:
X-Echo-Headers: header1,header2(echo these request headers back asX-Echoed-*),X-Echo-Set-Header-Foo: bar(setsFoo: barin response) - Env:
ECHO_HEADER_Foo=bar(setsFoo: barin all responses) - Example:
curl -H "X-Echo-Set-Header-Custom: value" http://localhost:8080/
# Response Headers: Custom: value
Server Info
Include server details (uptime, hostname, version).
- Header:
X-Echo-Server-Info: true - Response Headers:
X-Echo-Server,X-Echo-Version,X-Echo-Uptime - Env:
ECHO_SERVER_INFO=trueenables by default. - Example:
curl -i -H "X-Echo-Server-Info: true" http://localhost:8080/
# ...
# X-Echo-Server:
# X-Echo-Version: 1.0.0
# X-Echo-Uptime: 1h2m3s
Notes
- Headers override environment variables.
- Response size and compression work together (e.g., large GZIP data).
- Invalid headers (e.g., malformed status) result in HTTP 400.