https://github.com/julb/http-reqtrace
https://github.com/julb/http-reqtrace
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/julb/http-reqtrace
- Owner: julb
- License: mit
- Created: 2020-11-28T15:34:40.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-06-15T08:47:24.000Z (about 5 years ago)
- Last Synced: 2025-12-16T14:35:04.352Z (7 months ago)
- Language: Python
- Size: 61.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README



[](https://hub.docker.com/r/julb/http-reqtrace)
[](https://hub.docker.com/r/julb/http-reqtrace)
[](https://hub.docker.com/r/julb/http-reqtrace)
# http-reqtrace
## Description
The application starts a Web server which logs details of all incoming HTTP requests such as:
- HTTP Method & URL
- Query params
- Headers
- Body
The application accepts all HTTP methods and URIs.
The routing is defined like this:
- `/status/:statusCode` : return an HTTP response with status code **statusCode** and body `{"message":"OK|KO"}`
- `/**/*` : return an HTTP response with status code **200 OK** and body `{"message":"OK"}`
- `/metrics` : return Prometheus metrics regarding HTTP requests
Following query parameters are also supported:
- `?latencyInMs=60000` : wait for the given period in milliseconds before responding. This time cannot exceed 5 minuts.
This service can be used to :
- See very quickly what are the requests received and inspect their content.
- Have a quick way to simulate specific cases with particular HTTP response codes.
## How to use
### Starts the service
- Run container:
```bash
$ docker run -ti --name http-reqtrace -p 80:8080 -e PORT=8080 -u 65534:65534 julb/http-reqtrace:latest
```
Note: the `PORT` environment variable can be set to customize listening port.
### Request the service with any method, URI and parameters
```bash
$ curl http://localhost/context/uri?param1=value1¶m2=value2 -H "Authorization: Bearer jwt"
{"statusCode": 200,"message":"OK"}
```
```bash
INFO in app: > [GET] HTTP/1.1 http://localhost/context/uri?param1=value1¶m2=value2
INFO in app: >> Header : Host : localhost
INFO in app: >> Header : User-Agent : curl/7.54.0
INFO in app: >> Header : Accept : */*
INFO in app: >> Header : Authorization : Bearer jwt
INFO in app: >> Query : param1 : value1
INFO in app: >> Query : param2 : value2
INFO in app: >> Body : b''
INFO in app: < [ HTTP 200 ]
```
### Getting specific HTTP responses status codes
```bash
$ curl http://localhost/status/404 -H "Authorization: Bearer jwt"
{"statusCode":404,"message":"KO"}
$ curl http://localhost/status/500 -H "Authorization: Bearer jwt"
{"statusCode":500,"message":"KO"}
```
```bash
INFO in app: > [GET] HTTP/1.1 http://localhost/status/404
INFO in app: >> Header : Host : localhost
INFO in app: >> Header : User-Agent : curl/7.54.0
INFO in app: >> Header : Accept : */*
INFO in app: >> Header : Authorization : Bearer jwt
INFO in app: >> Body : b''
INFO in app: < [ HTTP 404 ]
INFO in app: > [GET] HTTP/1.1 http://localhost/status/500
INFO in app: >> Header : Host : localhost
INFO in app: >> Header : User-Agent : curl/7.54.0
INFO in app: >> Header : Accept : */*
INFO in app: >> Header : Authorization : Bearer jwt
INFO in app: >> Body : b''
INFO in app: < [ HTTP 500 ]
```
### Simulate latency
```bash
$ curl http://localhost/status/504?latencyInMs=60000
{"statusCode":504,"message":"KO"}
```
```bash
INFO in app: > [GET] HTTP/1.1 http://localhost/status/504?latencyInMs=60000
INFO in app: >> Header : Host : localhost
INFO in app: >> Header : User-Agent : curl/7.54.0
INFO in app: >> Header : Accept : */*
INFO in app: >> Query : latencyInMs : 60000
INFO in app: >> Body : b''
INFO in app: << Waiting for timeout exhaust: 60000ms.
INFO in app: < [ HTTP 504 ]
```