route
This module contains all the utilities to launch a micro server from python lib. It is not recommended to use it in production mode.
$ python route.py -h
Usage: route.py [options] BINDINGS...
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-t THREADS, --threads=THREADS
set thread number [default: 2]
-l LOGLEVEL, --log-level=LOGLEVEL
set log level from 1 to 100 [default: 20]
-i HOST, --ip=HOST ip to run from [default: 127.0.0.1]
-p PORT, --port=PORT port to use [default: 5000]
BINDINGS is a list of python modules containing python bound functions.
Endpoint Objects
class Endpoint()
Placeholder for storing endpoint mappings.
EndpointAlreadyDefined Objects
class EndpointAlreadyDefined(Exception)
Exception raised when an endpoint is already defined.
UrlMatchError Objects
class UrlMatchError(Exception)
Exception raised for errors in URL pattern matching.
uHTTPRequestHandler Objects
class uHTTPRequestHandler(BaseHTTPRequestHandler)
Custom HTTP request handler that handles HTTP methods dynamically.
Methods:
format_response- Formats the response as JSON.do_- Processes HTTP requests based on registered endpoints.
uHTTPRequestHandler.__getattr__
def __getattr__(attr: str) -> Callable
Dynamically handles HTTP methods like ‘do_GET’, ‘do_POST’, etc.
Arguments:
attrstr - The attribute name.
Returns:
Callable- The dynamic handler function.
uHTTPRequestHandler.format_response
@staticmethod
def format_response(resp: tuple) -> typing.Tuple[str, str]
Formats a response as JSON.
Arguments:
respAny - The response data.
Returns:
Tuple[str, str]: The JSON response and its content type.
uHTTPRequestHandler.do_
def do_(method: str = "GET") -> int
Processes an HTTP request and calls the appropriate endpoint.
Arguments:
methodstr - The HTTP method (e.g., “GET”, “POST”). Defaults to “GET”.
Returns:
int- Status code of the response.
bind
def bind(path: str,
methods: list = ["GET"],
target: BaseHTTPRequestHandler = uHTTPRequestHandler) -> Callable
Binds a function to a specific URL path and HTTP methods.
Arguments:
pathstr - The URL path to bind.methodslist - List of HTTP methods (e.g., [“GET”, “POST”]).targetBaseHTTPRequestHandler - The request handler class.
Returns:
Callable- A decorator that binds the function.
callback
def callback(url: str, headers: dict, data: str, function: Callable,
method: str, markups: OrderedDict, regexp: re.Pattern,
arg_spec: inspect.FullArgSpec) -> typing.Any
Handles the execution of the bound function with appropriate arguments. the last 4 parameters are defined by the bind function and stored in the lambda callback.
Arguments:
urlstr - The full URL of the request.headersdict - The HTTP headers from the request.datastr - The body of the request.functionCallable - The function to execute.methodstr - The HTTP command used.markupsOrderedDict - Mappings of path variables to their types.regexpre.Pattern - Compiled regex for path matching.arg_specFixArgSpec - Argument specification of the function.
Returns:
Any- The result of the function execution.
run
def run(host: str = "127.0.0.1", port: int = 5000, loglevel: int = 20) -> None
Starts the HTTP server.
Arguments:
hoststr - The IP address to bind to. Defaults to “127.0.0.1”.portint - The port to bind to. Defaults to 5000.loglevelint - Logging level. Defaults to 20.