QHttpEngine 0.1.0
Simple and secure HTTP server for Qt applications
Loading...
Searching...
No Matches
QHttpHandler Class Reference

Base class for HTTP handlers. More...

#include <QHttpEngine/QHttpHandler>

Inheritance diagram for QHttpHandler:
QFilesystemHandler QObjectHandler

Public Member Functions

 QHttpHandler (QObject *parent=0)
 Base constructor for a handler.
void addRedirect (const QRegExp &pattern, const QString &path)
 Add a redirect for a specific pattern.
void addSubHandler (const QRegExp &pattern, QHttpHandler *handler)
 Add a handler for a specific pattern.
void route (QHttpSocket *socket, const QString &path)
 Route an incoming request.

Protected Member Functions

virtual void process (QHttpSocket *socket, const QString &path)
 Process a request.

Detailed Description

When a request is received by a QHttpServer, it invokes the route() method of the root handler which is used to determine what happens to the request. All HTTP handlers derive from this class and should override the protected process() method in order to process the request. Each handler also maintains a list of redirects and sub-handlers which are used in place of invoking process() when one of the patterns match.

To add a redirect, use the addRedirect() method. The first parameter is a QRegExp pattern that the request path will be tested against. If it matches, an HTTP 302 redirect will be written to the socket and the request closed. For example, to have the root path "/" redirect to "/index.html":

QHttpHandler handler;
handler.addRedirect(QRegExp("^$"), "/index.html");
void addRedirect(const QRegExp &pattern, const QString &path)
Add a redirect for a specific pattern.
QHttpHandler(QObject *parent=0)
Base constructor for a handler.

To add a sub-handler, use the addSubHandler() method. Again, the first parameter is a QRegExp pattern. If the pattern matches, the portion of the path that matched the pattern is removed from the path and it is passed to the sub-handler's route() method. For example, to have a sub-handler invoked when the path begins with "/api/":

QHttpHandler handler, subHandler;
handler.addSubHandler(QRegExp("^api/"), &subHandler);
void addSubHandler(const QRegExp &pattern, QHttpHandler *handler)
Add a handler for a specific pattern.

If the request doesn't match any redirect or sub-handler patterns, it is passed along to the process() method, which is expected to either process the request or write an error to the socket. The default implementation of process() simply returns an HTTP 404 error.

Member Function Documentation

◆ addRedirect()

void QHttpHandler::addRedirect ( const QRegExp & pattern,
const QString & path )

The pattern and path will be added to an internal list that will be used when the route() method is invoked to determine whether the request matches any patterns. The order of the list is preserved.

The destination path may use "%1", "%2", etc. to refer to captured parts of the pattern. The client will receive an HTTP 302 redirect.

◆ addSubHandler()

void QHttpHandler::addSubHandler ( const QRegExp & pattern,
QHttpHandler * handler )

The pattern and handler will be added to an internal list that will be used when the route() method is invoked to determine whether the request matches any patterns. The order of the list is preserved.

◆ process()

virtual void QHttpHandler::process ( QHttpSocket * socket,
const QString & path )
protectedvirtual

This method should process the request either by fulfilling it, sending a redirect with QHttpSocket::writeRedirect(), or writing an error to the socket using QHttpSocket::writeError().

Reimplemented in QFilesystemHandler, and QObjectHandler.


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