![]() |
Qore RestHandler Module Reference 1.6.2
|
this is the main handler class to be registered with the HttpServer More...
Public Member Functions | |
| constructor (*HttpServer::AbstractAuthenticator auth, RestSchemaValidator::AbstractRestSchemaValidator validator=new NullRestSchemaValidator()) | |
| create the object optionally with the given HttpServer::AbstractAuthenticator | |
| constructor (Logger::LoggerInterface logger, *HttpServer::AbstractAuthenticator auth, RestSchemaValidator::AbstractRestSchemaValidator validator=new NullRestSchemaValidator(logger)) | |
| create the object optionally with the given Logger and authenticator | |
| hash< auto > | get (hash< auto > cx, *hash< auto > ah) |
| default get handler for the base handler class | |
| *AbstractRestSchemaValidator | getRestSchemaValidator () |
| Returns any REST schema validator set for the handler. | |
| auto | handleExternalRequest (string method, string path, *hash< auto > body, hash< auto > cx={}) |
| processes REST API calls outside the HTTP server | |
| hash< HttpResponseInfo > | handleRequest (HttpListenerInterface listener, Socket s, hash< auto > cx, hash< auto > hdr, *data b) |
| called by the HTTP server to handle incoming HTTP requests | |
| logDebug (string fmt,...) | |
| This method is called with debug log messages. | |
| logError (string fmt,...) | |
| This method is called with error log messages. | |
| logInfo (string fmt,...) | |
| This method is called with informational log messages. | |
| string | name () |
| returns the name of the root REST class | |
| removeRootPath (reference< string > path) | |
| default implementation is empty | |
| requestDeserializationError (hash< auto > hdr, hash< auto > cx, string body) | |
| default implementation is empty | |
| responseSerializationError (hash< auto > cx, *hash< auto > aih, hash< auto > rv) | |
| default implementation is empty | |
| setLogger (*Logger::LoggerInterface logger) | |
| Sets a new logger. | |
Public Member Functions inherited from RestHandler::AbstractRestClass | |
| addClass (AbstractRestClass cls) | |
| adds a REST class to the handler | |
| hash< HttpServer::HttpHandlerResponseInfo > | handleRequest (HttpListenerInterface listener, RestHandler rh, Socket s, *list< string > cl, string mn, hash< auto > cx, *hash< auto > args) |
| this method is called by the RestHandler class to match the right object with incoming requests | |
| abstract string | name () |
| this provides the name of the REST class | |
| *AbstractRestClass | subClass (string name, hash< auto > cx, *hash< auto > args) |
| this method will be called to find a sub-class | |
| *AbstractRestClass | subClassImpl (string name, hash< auto > cx, *hash< auto > args) |
| this method will be called to find a sub-class | |
Public Attributes | |
| const | Err501 = ... |
| a hash for a 501 Unimplemented error message | |
| const | Methods = ... |
| supported HTTP methods | |
Public Attributes inherited from RestHandler::AbstractRestClass | |
| hash< string, AbstractRestClass > | class_hash |
| class hash: name -> AbstractRestClass | |
| const | RestBasicMethodSet = map {$1: True} |
| set of REST class method names based on basic HTTP methods | |
Protected Member Functions | |
| checkExceptionSerializable (reference< hash< ExceptionInfo > > ex) | |
| Recursively ensure that exception arguments are serializable. | |
| hash< HttpHandlerResponseInfo > | dispatchRequest (HttpListenerInterface listener, Socket s, *list< string > class_list, string method_name, string path, hash< auto > cx, *hash< auto > args) |
| Dispatches the request and returns the response. | |
| *hash< auto > | errorResponseHeaders (hash< auto > cx) |
| Retrieves headers for an error response. | |
| hash< HttpHandlerResponseInfo > | returnRestException (hash< ExceptionInfo > ex) |
| method that determines how exceptions handling REST requests are returned | |
Protected Member Functions inherited from RestHandler::AbstractRestClass | |
| hash< HttpServer::HttpHandlerResponseInfo > | dispatch (RestHandler rh, string mn, *hash< auto > ah, hash< auto > cx) |
| this method is called to dispatch requests on the given object | |
| hash< HttpServer::HttpHandlerResponseInfo > | dispatchStream (HttpListenerInterface listener, RestHandler rh, Socket s, string mn, *hash< auto > ah, hash< auto > cx) |
| this method is called to dispatch streamed requests on the given object | |
| *hash< string, bool > | doGetPossibleSubClasses (hash< auto > cx, *hash< auto > ah) |
| returns a set of possible subclasses for a particular request | |
| hash< HttpServer::HttpHandlerResponseInfo > | unknownSubClassError (string cls_name, hash< auto > cx, *hash< auto > ah) |
| returns a 404 Not Found response when a request tries to access an unknown subclass | |
Protected Attributes | |
| RestSchemaValidator::AbstractRestSchemaValidator | validator |
| REST schema validator. | |
this is the main handler class to be registered with the HttpServer
The RestHandler class should be subclassed to customize its behavior.
To provide for logging; the following methods can be reimplemented in subclasses:
In order to match REST requests under a root path, reimplement the following method in a subclass:
| RestHandler::RestHandler::constructor | ( | *HttpServer::AbstractAuthenticator | auth, |
| RestSchemaValidator::AbstractRestSchemaValidator | validator = new NullRestSchemaValidator() ) |
create the object optionally with the given HttpServer::AbstractAuthenticator
| auth | the authentication object to use to authenticate connections (see HttpServer::AbstractAuthenticator); if no HttpServer::AbstractAuthenticator object is passed, then by default no authentication will be required |
| validator | a REST API schema validator object; if none is present, then the default REST de/serialization support is provided as documented in RestSchemaValidator::NullRestSchemaValidator |
| RestHandler::RestHandler::constructor | ( | Logger::LoggerInterface | logger, |
| *HttpServer::AbstractAuthenticator | auth, | ||
| RestSchemaValidator::AbstractRestSchemaValidator | validator = new NullRestSchemaValidator(logger) ) |
create the object optionally with the given Logger and authenticator
| logger | the logger interface to use for the handler |
| auth | the authentication object to use to authenticate connections (see HttpServer::AbstractAuthenticator); if no HttpServer::AbstractAuthenticator object is passed, then by default no authentication will be required |
| validator | a REST API schema validator object; if none is present, then the default REST de/serialization support is provided as documented in RestSchemaValidator::NullRestSchemaValidator |
|
protected |
Retrieves headers for an error response.
| auto RestHandler::RestHandler::handleExternalRequest | ( | string | method, |
| string | path, | ||
| *hash< auto > | body, | ||
| hash< auto > | cx = {} ) |
processes REST API calls outside the HTTP server
Requests will be dispatched to REST classes registered with this object
| method | the HTTP method; if the the method is unknown, an UNKNOWN-REST-METHOD exception is raised |
| path | the URI path for the call |
| body | the arguments to the call; note that arguments are combined with any arguments provided in path |
| cx | simulated HTTP call context hash |
| UNKNOWN-REST-METHOD | the HTTP method is unknown / unsupported |
| INVALID-URI-PATH | URI cannot be parsed |
| INVALID-REST-ARGS | invalid REST action |
| REST-CLASS-ERROR | invalid / unknown REST class in URI path |
| REST-ERROR | an error response was returned from the REST handler for the given method |
arg key of the exception hash in the exceptions above contains the HTTP status code of the response409 status code is added in the arg key of the exception hash| hash< HttpResponseInfo > RestHandler::RestHandler::handleRequest | ( | HttpListenerInterface | listener, |
| Socket | s, | ||
| hash< auto > | cx, | ||
| hash< auto > | hdr, | ||
| *data | b ) |
called by the HTTP server to handle incoming HTTP requests
Requests will be dispatched to REST classes registered with this object
| listener | a listener API object |
| s | the Socket object serving the request |
| cx | call context hash; this hash will have the following keys:
|
| hdr | incoming header hash; all keys will be converted to lower-case, additionally the following keys will be present:
|
| b | message body, if any |
"code": the HTTP return code (see HttpServer::HttpCodes)"body": the message body to return in the response"close": (optional) set this key to True if the connection should be unconditionally closed when the handler returns"hdr": (optional) set this key to a hash of extra header information to be returned with the response | RestHandler::RestHandler::logDebug | ( | string | fmt, |
| ... ) |
This method is called with debug log messages.
reimplement in subclasses to provide for logging
| RestHandler::RestHandler::logError | ( | string | fmt, |
| ... ) |
This method is called with error log messages.
reimplement in subclasses to provide for logging
| RestHandler::RestHandler::logInfo | ( | string | fmt, |
| ... ) |
This method is called with informational log messages.
reimplement in subclasses to provide for logging
|
protected |
method that determines how exceptions handling REST requests are returned
by default a 409 Conflict response is returned with the serialized exception information in the message body