Skip to main content

The application starts a Web server which logs details of all incoming HTTP requests.

Project description

PyPI PyPI - License PyPI - Downloads docker-image-version docker-image-size docker-pulls

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:
$ 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

$ curl http://localhost/context/uri?param1=value1&param2=value2 -H "Authorization: Bearer jwt"
{"statusCode": 200,"message":"OK"}
INFO in app: > [GET] HTTP/1.1 http://localhost/context/uri?param1=value1&param2=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

$ 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"}
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

$ curl http://localhost/status/504?latencyInMs=60000
{"statusCode":504,"message":"KO"}
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 ]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

http-reqtrace-1.1.1.tar.gz (3.9 kB view details)

Uploaded Source

File details

Details for the file http-reqtrace-1.1.1.tar.gz.

File metadata

  • Download URL: http-reqtrace-1.1.1.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.2

File hashes

Hashes for http-reqtrace-1.1.1.tar.gz
Algorithm Hash digest
SHA256 003a8121073a09d41263a81ba23a2220063bd60e222e510ae3ad7c2fe9918ba7
MD5 61cf0c4a3ae0cfb80a77e2292f5c6176
BLAKE2b-256 ee0d63cc5b801cca84d97ea42c1fad2548aaaf9abe634659f2ed9a34019e8ec4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page