3 votes

Comment utiliser différents handle_post pour traiter les messages reçus (C++ REST SDK) ?

Je crée un serveur qui écoute sur le port 7000. Je veux que mon serveur puisse utiliser la fonction void handle_post1() pour traiter le premier message qu'il reçoit et utiliser void handle_post2() pour traiter le deuxième http request qu'il reçoit. comme :

 listener.support(methods::POST, handle_post1);//if this is the first msg I receive
 listener.support(methods::POST, handle_post2);//if this is the second msg I receive

J'ai essayé de coder comme ceci mais cela ne fonctionne pas. Comment puis-je faire cela ?

1voto

Christophe Points 5220

Votre écouteur traitera la demande du côté du serveur. Avec support() vous ne traitez pas une demande spécifique mais vous ajoutez un gestionnaire pour toutes les demandes suivantes.

Dans votre question, vous avez l'intention de traiter les demandes différemment, en fonction de l'ordre relatif des demandes : la première doit être traitée par handle_post1 et le second avec handle_post2 . Cela signifie que vous voulez que le traitement dépende de l'état du serveur.

C'est le moment de rappeler que Casablanca est l'outil de Microsoft C++ REST SDK . Et REST implique un apatride traitement. Vous ne trouverez donc pas de soutien pour un traitement dépendant de l'État.

Si vous souhaitez vraiment aller plus loin, vous pouvez imaginer d'utiliser une handle_dispatcher() qui maintient une variable statique qui compte les demandes et délègue la suite à handle_post1 o handle_post2 en fonction de l'État. Mais cela n'est vraiment pas conseillé. L'objectif de REST est que des requêtes différentes puissent être envoyées à des serveurs différents, auquel cas votre distributeur ne produirait pas les résultats escomptés. Si vous ne souhaitez pas adopter cette approche, vous devriez alors utiliser un framework avec état.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X