userver: server::handlers::HandlerBase Class Reference
Loading...
Searching...
No Matches
server::handlers::HandlerBase Class Referenceabstract

#include <userver/server/handlers/handler_base.hpp>

Detailed Description

Base class for the request handlers.

Each handler has an associated path and invoked only for the requests for that path.

Static options of server::handlers::HandlerBase :

Name Description Default value
path If a request matches this path wildcard then process it by handler.
as_fallback Set to "implicit-http-options" and do not specify a path if this handler processes the OPTIONS requests for paths that do not process OPTIONS method. Possible values: implicit-http-options, unknown.
task_processor A task processor to execute the requests. the 'default_task_processor' value from components::ManagerControllerComponent
method Comma-separated list of allowed methods.
max_request_size Maximum size of the whole request. Limits both the size of the request and the size of a decompressed request body (if compression is being used). Requests exceeding the limit are rejected with 'Request Entity Too Large' (413) HTTP code. 1024 * 1024
max_headers_size Max request headers size of empty to do not limit. 65536
parse_args_from_body Optional field to parse request according to x-www-form-urlencoded rules and make parameters accessible as query parameters. false
auth.type Auth type.
auth.types.[] List of auth types. Each of the elements: auth type.
auth.* Server::handlers::auth::HandlerAuthConfig authorization config.
url_trailing_slash 'both' to treat URLs with and without a trailing slash as equal, 'strict-match' otherwise. Possible values: both, strict-match. both
max_requests_in_flight Integer to limit max pending requests to this handler. <no limit>
request_body_size_log_limit Trim the request to this size before logging. 512
request_headers_size_log_limit Trim request headers to this size before logging. 512
response_data_size_log_limit Trim responses to this size before logging. 512
max_requests_per_second Integer to limit RPS to this handler. <no limit>
decompress_request Allow decompression of the requests. true
throttling_enabled Allow throttling of the requests by components::Server , for more info see its max_response_size_in_flight and requests_queue_size_threshold options. true
set-response-server-hostname Set to true to add the X-YaTaxi-Server-Hostname header with instance name, set to false to not add the header. <takes the value from components::Server config>
response-body-stream TODO. false
monitor-handler Overrides the in-code is_monitor flag that makes the handler run either on 'server.listener' or on 'server.listener-monitor'. uses in-code flag value
set_tracing_headers Whether to set http tracing headers (X-YaTraceId, X-YaSpanId, X-RequestId). true
deadline_propagation_enabled When set to false, disables deadline propagation within this handler. This includes: - reading the task-inherited deadline from HTTP headers and gRPC metadata; - interrupting operations when deadline expires; - propagating the deadline to downstream services and databases. Deadline propagation can also be disabled in the static config of: - components::Server (to set the default for all HTTP handlers). Deadline propagation is disabled if disabled statically OR dynamically. true
deadline_expired_status_code The HTTP status code to return if the request deadline expires. taken from server.listener.handler-defaults.deadline_expired_status_code
enable_write_statistics Whether to write handler statistics. true

Options inherited from components::ComponentBase :

Name Description Default value
load-enabled Set to false to disable loading of the component. true

Definition at line 25 of file handler_base.hpp.

+ Inheritance diagram for server::handlers::HandlerBase:

Public Member Functions

 HandlerBase (const components::ComponentConfig &config, const components::ComponentContext &component_context, bool is_monitor=false)
 
virtual void PrepareAndHandleRequest (http::HttpRequest &request, request::RequestContext &context) const =0
 
virtual void ReportMalformedRequest (http::HttpRequest &) const
 
bool IsMonitor () const
 Returns whether this is a monitoring handler.
 
const HandlerConfigGetConfig () const
 Returns handler config.
 
ComponentHealth GetComponentHealth () const override
 
void OnLoadingCancelled () override
 
void OnAllComponentsLoaded () override
 
void OnAllComponentsAreStopping () override
 

Static Public Member Functions

static yaml_config::Schema GetStaticConfigSchema ()
 

Protected Types

using HandlerErrorCode = handlers::HandlerErrorCode
 
using InternalMessage = handlers::InternalMessage
 
using ExternalBody = handlers::ExternalBody
 
using ClientError = handlers::ClientError
 
using InternalServerError = handlers::InternalServerError
 
using LoggableComponentBase = ComponentBase
 

Member Typedef Documentation

◆ ClientError

◆ ExternalBody

◆ HandlerErrorCode

◆ InternalMessage

◆ InternalServerError

◆ LoggableComponentBase

using components::ComponentBase::LoggableComponentBase = ComponentBase
protectedinherited
Deprecated
use components::ComponentBase instead.

Definition at line 67 of file component_base.hpp.

Member Function Documentation

◆ GetComponentHealth()

ComponentHealth components::ComponentBase::GetComponentHealth ( ) const
inlineoverridevirtualinherited

Override this function to inform the world of the state of your component.

Warning
The function is called concurrently from multiple threads.

Reimplemented from components::RawComponentBase.

Reimplemented in server::handlers::Restart.

Definition at line 35 of file component_base.hpp.

◆ IsMonitor()

bool server::handlers::HandlerBase::IsMonitor ( ) const
inline

Returns whether this is a monitoring handler.

Definition at line 44 of file handler_base.hpp.

◆ OnAllComponentsAreStopping()

void components::ComponentBase::OnAllComponentsAreStopping ( )
inlineoverridevirtualinherited

Component may use this function to stop doing work before the stop of the components that depend on it.

Base components may override it and make final to do some work before the derived object constructor is called. Don't use it otherwise.

Reimplemented from components::RawComponentBase.

Reimplemented in components::Server, and urabbitmq::ConsumerComponentBase.

Definition at line 58 of file component_base.hpp.

◆ OnAllComponentsLoaded()

void components::ComponentBase::OnAllComponentsLoaded ( )
inlineoverridevirtualinherited

Component may use this function to finalize registration of other components that depend on it (for example, handler components register in server component, and the latter uses OnAllComponentsLoaded() to start processing requests).

Base components may override it and make final to do some work after the derived object constructor is called. Don't use it otherwise.

Reimplemented from components::RawComponentBase.

Reimplemented in components::Server, server::handlers::Ping, and urabbitmq::ConsumerComponentBase.

Definition at line 51 of file component_base.hpp.

◆ OnLoadingCancelled()

void components::ComponentBase::OnLoadingCancelled ( )
inlineoverridevirtualinherited

Called once if the creation of any other component failed. If the current component expects some other component to take any action with the current component, this call is a signal that such action may never happen due to components loading was cancelled. Application components might not want to override it.

Reimplemented from components::RawComponentBase.

Definition at line 42 of file component_base.hpp.

◆ PrepareAndHandleRequest()

virtual void server::handlers::HandlerBase::PrepareAndHandleRequest ( http::HttpRequest & request,
request::RequestContext & context ) const
pure virtual

Parses request, executes processing routines, and fills response accordingly. Does not throw.

Implemented in server::handlers::HttpHandlerBase.

◆ ReportMalformedRequest()

virtual void server::handlers::HandlerBase::ReportMalformedRequest ( http::HttpRequest & ) const
inlinevirtual

Produces response to a request unrecognized by the protocol based on provided generic response. Does not throw. The error should be stored into response status and body prior to this call.

Reimplemented in server::handlers::HttpHandlerBase.

Definition at line 41 of file handler_base.hpp.


The documentation for this class was generated from the following file: