xnano.requests
xnano.requests
¶
xnano.requests
Declare HTTP routes on grids and return text, bytes, or JSON responses.
Classes:
-
Request–Immutable parsed HTTP request.
-
Response–HTTP response returned from a request hook.
-
RequestEvent–Event payload carrying a parsed
Request.
Functions:
-
on_get_request–Decorate a handler for an HTTP
GETrequest. -
on_head_request–Decorate a handler for an HTTP
HEADrequest. -
on_post_request–Decorate a handler for an HTTP
POSTrequest. -
on_put_request–Decorate a handler for an HTTP
PUTrequest. -
on_delete_request–Decorate a handler for an HTTP
DELETErequest. -
on_connect_request–Decorate a handler for an HTTP
CONNECTrequest. -
on_options_request–Decorate a handler for an HTTP
OPTIONSrequest. -
on_trace_request–Decorate a handler for an HTTP
TRACErequest. -
on_patch_request–Decorate a handler for an HTTP
PATCHrequest. -
on_query_request–Decorate a handler for an HTTP
QUERYrequest. -
has_request_hooks–Return whether a grid (instance or class) declares any request hook.
-
collect_request_routes–Collect
@on_*_requestroute entries declared on a grid class. -
request–Register an HTTP request hook for an arbitrary method.
-
dispatch_request–Run the request hook matching
methodandpath.
Attributes:
-
HttpMethod(TypeAlias) –A standard HTTP request method.
HttpMethod
module-attribute
¶
HttpMethod: TypeAlias = Literal[
"GET",
"HEAD",
"POST",
"PUT",
"DELETE",
"CONNECT",
"OPTIONS",
"TRACE",
"PATCH",
"QUERY",
]
A standard HTTP request method.
RequestDecorator
module-attribute
¶
RequestDecorator: TypeAlias = (
EventHookFunction
| Callable[[EventHookFunction], EventHookFunction]
)
A request handler or a decorator that creates one.
Request
dataclass
¶
Request(
method: str,
path: str,
query: Mapping[str, tuple[str, ...]] = dict(),
headers: Mapping[str, str] = dict(),
body: bytes = b"",
)
Immutable parsed HTTP request.
Attributes:
-
method(str) –Uppercase HTTP method.
-
path(str) –Normalized path beginning with
/. -
query(Mapping[str, tuple[str, ...]]) –Read-only multi-value query mapping.
-
headers(Mapping[str, str]) –Read-only header mapping (lowercase keys preferred).
-
body(bytes) –Raw request body bytes.
Example
request = Request.from_parts("GET", "/search", query_string="q=xnano") request.method, request.query["q"] ('GET', ('xnano',))
Methods:
-
text–Decode
bodyas text. -
json–Parse
bodyas JSON via stdlibjson. -
from_parts–Build a request from raw HTTP parts with body limits.
query
class-attribute
instance-attribute
¶
Multi-value query parameters.
headers
class-attribute
instance-attribute
¶
Request headers with lowercase names.
text
¶
from_parts
classmethod
¶
from_parts(
method: str,
path: str,
*,
query_string: str = "",
headers: Mapping[str, str] | None = None,
body: bytes = b"",
max_body: int = 1048576
) -> "Request"
Build a request from raw HTTP parts with body limits.
Raises:
-
ValueError–If
bodyexceedsmax_body.
Source code in xnano/requests.py
Response
dataclass
¶
HTTP response returned from a request hook.
Attributes:
-
body(bytes | str) –Response body as bytes or text.
-
status(int) –HTTP status code.
-
headers(dict[str, str]) –Response headers.
Example
response = Response.json({"ready": True}, status=201) response.status 201
Methods:
headers
class-attribute
instance-attribute
¶
Response headers.
json
classmethod
¶
Build a JSON response.
Source code in xnano/requests.py
RequestEvent
dataclass
¶
on_get_request
¶
on_get_request(
handler_or_path: EventHookFunction | str | None = None,
/,
*,
path: str | None = None,
) -> RequestDecorator
Decorate a handler for an HTTP GET request.
Source code in xnano/requests.py
on_head_request
¶
on_head_request(
handler_or_path: EventHookFunction | str | None = None,
/,
*,
path: str | None = None,
) -> RequestDecorator
Decorate a handler for an HTTP HEAD request.
Source code in xnano/requests.py
on_post_request
¶
on_post_request(
handler_or_path: EventHookFunction | str | None = None,
/,
*,
path: str | None = None,
) -> RequestDecorator
Decorate a handler for an HTTP POST request.
Source code in xnano/requests.py
on_put_request
¶
on_put_request(
handler_or_path: EventHookFunction | str | None = None,
/,
*,
path: str | None = None,
) -> RequestDecorator
Decorate a handler for an HTTP PUT request.
Source code in xnano/requests.py
on_delete_request
¶
on_delete_request(
handler_or_path: EventHookFunction | str | None = None,
/,
*,
path: str | None = None,
) -> RequestDecorator
Decorate a handler for an HTTP DELETE request.
Source code in xnano/requests.py
on_connect_request
¶
on_connect_request(
handler_or_path: EventHookFunction | str | None = None,
/,
*,
path: str | None = None,
) -> RequestDecorator
Decorate a handler for an HTTP CONNECT request.
Source code in xnano/requests.py
on_options_request
¶
on_options_request(
handler_or_path: EventHookFunction | str | None = None,
/,
*,
path: str | None = None,
) -> RequestDecorator
Decorate a handler for an HTTP OPTIONS request.
Source code in xnano/requests.py
on_trace_request
¶
on_trace_request(
handler_or_path: EventHookFunction | str | None = None,
/,
*,
path: str | None = None,
) -> RequestDecorator
Decorate a handler for an HTTP TRACE request.
Source code in xnano/requests.py
on_patch_request
¶
on_patch_request(
handler_or_path: EventHookFunction | str | None = None,
/,
*,
path: str | None = None,
) -> RequestDecorator
Decorate a handler for an HTTP PATCH request.
Source code in xnano/requests.py
on_query_request
¶
on_query_request(
handler_or_path: EventHookFunction | str | None = None,
/,
*,
path: str | None = None,
) -> RequestDecorator
Decorate a handler for an HTTP QUERY request.
Source code in xnano/requests.py
has_request_hooks
¶
Return whether a grid (instance or class) declares any request hook.
Source code in xnano/requests.py
collect_request_routes
¶
Collect @on_*_request route entries declared on a grid class.
request
¶
Register an HTTP request hook for an arbitrary method.
Parameters:
-
method(str) –HTTP method name.
-
path(str, default:'/') –URL path (normalized to a leading slash).
Returns:
-
Callable[[EventHookFunction], EventHookFunction]–A decorator that marks the function as a request hook.
Source code in xnano/requests.py
dispatch_request
¶
dispatch_request(
grid: Any,
method: str,
path: str,
*,
request_obj: Request | None = None,
runtime: Any | None = None
) -> Response | bool
Run the request hook matching method and path.
Pass a runtime to make it available through the handler's Context.
A handler that returns None produces an empty successful response.
Parameters:
-
grid(Any) –Grid instance declaring request hooks.
-
method(str) –HTTP method.
-
path(str) –Request path.
-
request_obj(Request | None, default:None) –Optional parsed request for
ctx.request. -
runtime(Any | None, default:None) –Optional runtime exposed through the hook context.
Returns:
-
Response | bool–The handler response, or whether a route matched when no runtime was
-
Response | bool–supplied.