(Je ne connais pas RESTFul, veuillez me corriger si mon concept est erroné)
Dans l'architecture RESTFul, nous mappons chaque action sur une URL. Si je clique sur "publier un article", que ce soit en fait l'URL http://example.com/
Et certaines données action=post&content=blahblah
.
Si je veux publier, mais pas actualiser la page Web entière, je peux utiliser XMLHTTPRequest de javascript. Je le poste, puis j'obtiens son contenu et je l'insère dans un div de ma page. Ces actions sont toutes asynchrones.
Alors je sais qu'il y a quelque chose qui s'appelle WebSocket
et c'est le wrapper socket.io
. Il utilise "message" pour communiquer entre le client et le serveur. Lorsque je clique sur "publier", le client appelle simplement socket.send(data)
et attend le client.send(data)
du serveur. C'est magique. Mais qu'en est-il de l'URL?
Est-il possible d'utiliser les deux modèles sans me répéter? Dans d'autres Word, chaque action a son URL, et certaines d'entre elles peuvent interagir avec l'utilisateur en temps réel (par socket.io?)
De plus, dois-je faire cela? Dans un programme web très interactif (ex. Jeux), le RESTFul est toujours significatif?
Vous définissez un gestionnaire pour les actions qui correspondent à REST sur http. POST et GET font généralement référence à la mise à jour et à la requête sur une entité. Il n'y a absolument aucune raison vous ne pouvez pas simplement définir un gestionnaire pour les versions génériques de ces opérations CRUD qui peuvent être utilisées dans les deux contextes. La façon dont je le fais généralement est d'introduire le concept d'une "route" pour le transport en temps réel et de les cartographier aux mêmes gestionnaires CRUD.
Vous avez une session, vous pouvez imposer la même ACL, etc.
+---------------------------------+
| |
| BROWSER |
| |
+--+--^-------------------+---^---+
| | | |
| | | |
+--v--+---+ +--v---+---+
| | | |
| HTTP | | SOCKET.IO|
+--+---^--+ +--+---^---+
| | | |
+--v---+------------------v---+---+
| |
| ROUTING/PUBSUB |
+-+--^-------+--^-------+--^------+
| | | | | |
+-v--+--+ +-v--+--+ +-v--+-+
| | | | | |
| USERS | | ITEMS | |ETC |
+-------+ +-------+ +------+
ENTITY CRUD HANDLERS
J'ai posté ceci sur mon blog récemment:
Conception d'une API CRUD pour WebSockets
Lors de la construction Weld , nous utilisons à la fois REST et WebSockets (Socket.io). Trois observations sur WebSockets:
Ma solution:
"AppServer/user/create"
.