Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-60105

Finalisation of Lightweight HTTP server

    XMLWordPrintable

Details

    Description

      Provide a framework for an HTTP server with the following main applications:

      • make it easy for developers to expose some Qt application functionality through REST APIs
      • support integration of WebAssembly and UI remoting technologies (such as WebGL) into Qt
      • make devices built with Qt configurable or remote-controlled via HTTP

      Initial Version

      The main feature of the initial version of the framework is to provide routing as per HTTP 1.1, and access to response and request objects through C++ and QML APIs, while maintaining a small footprint. The framework is extensible through C++ subclassing of the respective abstract and interface classes.
      Basic functionality

      • HTTP 1.1 standard compliant handling of requests and responses
      • access to the HTTP request and response properties (verb/method, headers, body) through a convenient API
      • routing with type checking and implicit conversion (QTBUG-60106)
      • error handling with custom error response
      • support for websockets

      Scalability and concurrency

      • single-threaded, event driven by default
      • reentrant framework
      • multithreaded response handling by subclassing QTcpServer is possible

      Security

      • support for encryption via HTTPS (should be default)
      • basic authentication possible through access to HTTP header (QTBUG-60109)

      Support for operators

      • runtime-configurable logging
      • rate limiting (in addition to QTcpServer::setMaximumPendingConnections; might need more functionality in the network stack to prevent flooding/DDoS/brute-forcing)

      Future releases

      Features we are considering

      Technologies to be researched

      • how to integrate with a reverse proxy (nginx, wsgi)
      • working with API gateway technologies (swagger etc)
      • QUIC
      • JSON-RPC

      Documentation:

      It Would be great if some detailed README is there which states how it can be build used,.

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              cnn Qt Core & Network
              fdv Fredrik de Vibe
              Vladimir Minenko Vladimir Minenko
              Alex Blasche Alex Blasche
              Votes:
              62 Vote for this issue
              Watchers:
              96 Start watching this issue

              Dates

                Created:
                Updated:

                Gerrit Reviews

                  There are no open Gerrit changes