// Copyright (C) 2022 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! \ingroup qthttpserver-examples \title Simple HTTP Server \examplecategory {Web Technologies} \brief Simple example of how to set up an HTTP server. \image browserwindow.png The Simple HTTP Server shows how to set up an HTTP server using the QHttpServer class. It listens to two sockets: one TCP socket and one SSL socket. Different callbacks are set up to demonstrate how to use the \l{QHttpServer::}{route()} function. A QHttpServer object is created, and a simple \l{QHttpServer::}{route()} handles the path \c "/" by returning \c{Hello world}: \snippet simple/main.cpp Setting up HTTP server Then we register a callback that serves the server's assets to the client: \snippet simple/main.cpp Returning assets Here we use the QHttpServerRequest object to return the client's IP address: \snippet simple/main.cpp Using QHttpServerRequest For one of the paths, \c {"/auth"}, \l{RFC 7617}{Basic HTTP Authentication} is used: \snippet simple/main.cpp Using basic authentication Then we use the \l{QHttpServer::}{addAfterRequestHandler()} function to change the QHttpServerResponse object after it has been handled by the callbacks registered by \l{QHttpServer::}{route()} by adding HTTP headers to the response: \snippet simple/main.cpp Using addAfterRequestHandler() A QTcpServer listening to a port is bound to the HTTP server using the \l{QAbstractHttpServer::}{bind()} function: \snippet simple/main.cpp Binding the TCP server And then \l QSslConfiguration is used to create an SSL configuration for a QHttpServer to serve HTTPS traffic: \snippet simple/main.cpp HTTPS Configuration example After everything is set up, all that remains is to start handling incoming requests: \snippet simple/main.cpp Start handling requests \example simple */