Qt prépare un serveur HTTP minimaliste
Le module Qt HTTP Server est en cours de développement
Le 2019-01-25 21:10:08, par dourouc05, Responsable Qt & Livres
Bon nombre d'applications ont besoin d'un serveur HTTP léger, ne fût-ce que côté serveur pour répondre aux requêtes d'une API ReST ou pour afficher une interface déportée par WebGL. Il est assez rébarbatif d'implémenter, projet après projet, le même code pour lire des paquets HTTP, écrire les réponses, gérer les connexions et le routage entre une requête et le code correspondant. C'est pourquoi les développeurs de Qt se sont lancés dans le projet d'un nouveau module implémentant justement un serveur HTTP, le bien nommé Qt HTTP Server. Ce module se veut assez léger, plus qu'Apache ou nginx, probablement aussi que Cutelyst ou QttpServer — tout du moins, pour le moment. Certains envisagent d'inclure un moteur comme Jinja pour faciliter la création de pages HTML, voire un framework Web plus complet encore.
Le code est encore expérimental et est développé en parallèle des dernières versions de Qt. Pour le moment, un petit serveur HTTP pourrait être écrit comme ceci :
Pour le moment, Qt HTTP Server implémente déjà HTTP 1.0 et 1.1, HTTPS (en cours d'intégration), le routage (à l'aide de fonctions anonymes, apportées par C++11), les sockets Web (tout comme le module Qt Web Sockets) et la gestion des erreurs.
Voir aussi : le dépôt Git du projet, les discussions actuelles.
Le code est encore expérimental et est développé en parallèle des dernières versions de Qt. Pour le moment, un petit serveur HTTP pourrait être écrit comme ceci :
Code : |
1 2 3 4 5 6 7 8 9 10 11 12 | #include <QtCore> #include <QtHttpServer> int main(int argc, char **argv) { QCoreApplication app(argc, argv); QHttpServer httpServer; httpServer.route("/", []() { return "Hello world"; }); httpServer.listen(QHostAddress::Any); return app.exec(); } |
Voir aussi : le dépôt Git du projet, les discussions actuelles.
-
JeanMorletMembre régulierJe ne dirais pas que je suis super content parce qu'ils le font car je n'en savais rien, mais du coup, je suis super impatient de tester ça
. Je pense que c'est un module susceptible de faire gagner pas mal de temps. le 26/01/2019 à 18:47 -
requinhamMembre régulierFaut faire attention à la license qui est en GPLv3. Ainsi, tout votre code devrait l'être.le 24/02/2021 à 11:35