pub struct HttpApi<H> { /* private fields */ }Expand description
Builder for the axum task API.
Authentication and metrics are optional.
build returns a standalone router and OpenAPI document.
mount adds the documented task subtree to an application router.
router returns only the router.
§Example
use std::sync::Arc;
use solti_api::{ApiHandler, HttpApi};
use solti_model::Token;
fn build<H: ApiHandler>(
handler: Arc<H>,
token: Token,
) -> solti_api::axum::Router {
HttpApi::new(handler)
.with_auth(token)
.router()
}§See Also
ApiHandlerdefines the backend operations.ApiErrordefines the HTTPStatusmapping.
Implementations§
Source§impl<H> HttpApi<H>where
H: ApiHandler,
impl<H> HttpApi<H>where
H: ApiHandler,
Sourcepub fn with_auth(self, token: Token) -> Self
pub fn with_auth(self, token: Token) -> Self
Requires a bearer token on every request.
The expected header is Authorization: Bearer <token>.
Missing or invalid credentials return 401 Unauthorized.
Rejected requests do not reach the handler.
Authentication is disabled when this method is not called.
Sourcepub fn with_metrics(self, metrics: ApiMetricsHandle) -> Self
pub fn with_metrics(self, metrics: ApiMetricsHandle) -> Self
Attaches a metrics backend.
The default backend ignores every update.
Sourcepub fn build(self) -> HttpApiParts
pub fn build(self) -> HttpApiParts
Builds a standalone router and its OpenAPI document.
Every request body is limited to MAX_REQUEST_BYTES.
Optional authentication runs before the handler.
Metrics include unmatched task API routes and authentication failures.
Sourcepub fn mount<S>(self, app: ApiRouter<S>, openapi: &mut OpenApi) -> ApiRouter<S>
pub fn mount<S>(self, app: ApiRouter<S>, openapi: &mut OpenApi) -> ApiRouter<S>
Mounts the documented task API into an application router.
The task routes are mounted at HTTP_API_ROOT.
Their handler state, authentication, limits, metrics, and fallbacks stay inside that route subtree.
The caller owns the final OpenApi document.
Call ApiRouter::finish_api once after every documented service has been mounted.
Auto Trait Implementations§
impl<H> !RefUnwindSafe for HttpApi<H>
impl<H> !UnwindSafe for HttpApi<H>
impl<H> Freeze for HttpApi<H>
impl<H> Send for HttpApi<H>
impl<H> Sync for HttpApi<H>
impl<H> Unpin for HttpApi<H>
impl<H> UnsafeUnpin for HttpApi<H>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request