Expand description
§Hyperlane Macros
A comprehensive collection of procedural macros for building HTTP servers with enhanced functionality. This crate provides attribute macros that simplify HTTP request handling, protocol validation, response management, and request data extraction.
§Features
- HTTP Method Handlers: Macros for all standard HTTP methods (GET, POST, PUT, DELETE, etc.)
- Protocol Validation: Support for HTTP versions, WebSocket, TLS, and HTTP/2 cleartext
- Response Management: Status code setting, reason phrase customization, and response sending
- Request Data Extraction: Body parsing, request header extraction, request query parameters, and route parameters
- Filter Mechanisms: Unknown method, upgrade, and version filtering
- Hook System: Pre and post execution hooks for request processing
- Stream Management: Connection state handling for aborted and closed streams
- Server Instance Creation: Automatic Server instance initialization with custom variable names
§Dependencies
To use this crate, add the following dependencies to your Cargo.toml
:
[dependencies]
hyperlane-macros = "*"
hyperlane = "*"
serde = { version = "*", features = ["derive"] }
§Usage Guidelines
Most macros are designed to be used as attribute macros on async functions that accept a Context
parameter.
The hyperlane
macro can be used on any async function to create a Server instance.
Multiple macros can be combined on a single function to create complex request handling logic.
When using hook macros (pre_hook
, post_hook
), avoid combining them with other macros on the same function
to prevent unexpected behavior during macro expansion.
Attribute Macros§
- aborted
- Handles aborted request scenarios.
- attribute
- Extracts a specific attribute value into a variable.
- attributes
- Extracts all attributes into a HashMap variable.
- closed
- Handles closed connection scenarios.
- connect
- Restricts function execution to HTTP CONNECT requests only.
- delete
- Restricts function execution to HTTP DELETE requests only.
- filter_
unknown - Handles requests with any unknown characteristics.
- filter_
unknown_ method - Handles requests with unknown or non-standard HTTP methods.
- filter_
unknown_ upgrade - Handles requests with unknown or non-standard upgrade protocols.
- filter_
unknown_ version - Handles requests with unknown or non-standard HTTP versions.
- flush
- Flushes the response stream after function execution.
- get
- Restricts function execution to HTTP GET requests only.
- h2c
- Restricts function execution to HTTP/2 Cleartext (h2c) requests only.
- head
- Restricts function execution to HTTP HEAD requests only.
- host
- Restricts function execution to requests with a specific host.
- host_
filter - Filters requests that have no host header.
- http
- Restricts function execution to standard HTTP requests only.
- http0_9
- Restricts function execution to HTTP/0.9 requests only.
- http2
- Restricts function execution to HTTP/2 requests only.
- http3
- Restricts function execution to HTTP/3 requests only.
- http1_0
- Restricts function execution to HTTP/1.0 requests only.
- http1_1
- Restricts function execution to HTTP/1.1 requests only.
- http1_
1_ or_ higher - Restricts function execution to HTTP/1.1 or higher protocol versions.
- hyperlane
- Creates a new Server instance with the specified variable name.
- methods
- Allows function to handle multiple HTTP methods.
- options
- Restricts function execution to HTTP OPTIONS requests only.
- patch
- Restricts function execution to HTTP PATCH requests only.
- post
- Restricts function execution to HTTP POST requests only.
- post_
hook - Executes a specified function after the main handler function.
- pre_
hook - Executes a specified function before the main handler function.
- put
- Restricts function execution to HTTP PUT requests only.
- referer
- Restricts function execution to requests with a specific referer.
- referer_
filter - Filters requests that have a specific referer header.
- request_
body - Extracts the raw request body into a specified variable.
- request_
body_ json - Parses the request body as JSON into a specified variable and type.
- request_
cookie - Extracts a specific cookie value or all cookies into a variable.
- request_
cookies - Extracts all cookies as a raw string into a variable.
- request_
header - Extracts a specific HTTP request header into a variable.
- request_
headers - Extracts all HTTP request headers into a collection variable.
- request_
path - Extracts the HTTP request path into a variable.
- request_
query - Extracts a specific request query parameter into a variable.
- request_
querys - Extracts all request query parameters into a collection variable.
- request_
version - Extracts the HTTP request version into a variable.
- response_
body - Sets the HTTP response body.
- response_
header - Sets or replaces a specific HTTP response header.
- response_
reason_ phrase - Sets the HTTP reason phrase for the response.
- response_
status_ code - Sets the HTTP status code for the response.
- response_
version - Sets the HTTP response version.
- route_
param - Extracts a specific route parameter into a variable.
- route_
params - Extracts all route parameters into a collection variable.
- send
- Automatically sends the complete response after function execution.
- send_
body - Automatically sends only the response body after function execution.
- send_
once - Sends the complete response exactly once after function execution.
- send_
once_ body - Sends only the response body exactly once after function execution.
- tls
- Restricts function execution to TLS-encrypted requests only.
- trace
- Restricts function execution to HTTP TRACE requests only.
- ws
- Restricts function execution to WebSocket upgrade requests only.