J'ai lu cet article et j'ai essayé de créer une API simple par moi-même. En conséquence, j'ai approfondi mes connaissances sur REST et ROA, et je souhaite la partager.
Convient pour relier plusieurs logiciels dans un système distribué Un ensemble de principes et d'idées de conception.
L'un d'eux est ROA (Resource Oriented Architecture) </ strong>.
Les informations et les données existantes sur le Web sont considérées comme des ressources </ strong>, et les ressources sont considérées comme le centre. Architecture.
En outre, la ressource a au moins un URI comme condition pour que la ressource soit une ressource.
Regardons chacun d'eux
Les informations à fournir peuvent être exprimées via URI. Toutes les informations doivent avoir une adresse unique représentée par un URI.
Par exemple, si l'URI de base est: http://example.com
Si vous souhaitez connaître les informations d'un utilisateur spécifique http://example.com/users/1
Si vous voulez connaître les informations sur le chat http://example.com/cat
Si vous voulez connaître les informations de la souris http://example.com/mouse
Vous pouvez comprendre les informations à fournir simplement en regardant l'URI.
Doit être un protocole client / serveur sans état basé sur HTTP. Les informations échangées peuvent être complètement interprétées par elles-mêmes sans gérer l'état des sessions.
Ceci est facile à comprendre l'analogie suivante
(Exemple avec état): Client: Bonjour Greffier: Bienvenue. Bienvenue chez XX Burger Client: je voudrais un ensemble de hamburgers Greffier: Que souhaitez-vous pour le menu latéral? Client: avec des pommes de terre Greffier: Qu'aimeriez-vous boire? Client: Chez Ginger Ale Greffier: Que diriez-vous de faire une boisson taille L pour +50 yens? Client: M va bien Greffier: Voulez-vous vraiment faire cela? Client: Oui Greffier: je suis intelligent
(Exemple sans état): Client: Bonjour Greffier: Bienvenue. Bienvenue chez XX Burger Client: je voudrais un ensemble de hamburgers Greffier: Que souhaitez-vous pour le menu latéral? Client: Veuillez me donner un ensemble de hamburgers avec des pommes de terre Greffier: Qu'aimeriez-vous boire? Client: Veuillez me donner un ensemble de hamburgers avec pommes de terre et soda au gingembre Greffier: Que diriez-vous de faire une boisson taille L pour +50 yens? Client: Veuillez me donner un ensemble de hamburgers avec pommes de terre et soda au gingembre (M) Greffier: Voulez-vous vraiment faire cela? Client: Veuillez me donner un ensemble de hamburgers avec pommes de terre et soda au gingembre (M). c'est tout Greffier: je suis intelligent
Si vous considérez le commis comme un serveur, il a toujours eu affaire à un client. Pendant ce temps, il n'est pas possible de répondre aux autres clients. Lorsque le magasin est bondé (lorsque l'accès augmente) Augmentez le nombre d'employés (serveur WEB supplémentaire) pour répondre.
Dans un magasin normal, un employé accepte toujours le même client dans une même caisse, Dans le cas du WEB, puisque plusieurs serveurs WEB reçoivent plusieurs clients en même temps, S'il s'agit d'un serveur sans état, un commis distinct sera affecté à chaque interaction comme décrit ci-dessus. Il devient possible de répondre à la commande du client.
Source Qu'est-ce qui est apatride
Être capable d'inclure d'autres informations ou des liens vers ces informations dans les informations.
Toutes les opérations d'information (obtenir, créer, mettre à jour, supprimer) sont des méthodes HTTP (GET, POST, PUT, DELETE) Utiliser.
GET Une méthode pour obtenir les informations de l'URI spécifié. Cela inclut l'obtention de pages Web, d'images, de vidéos et de flux.
POST POST a les trois rôles suivants.
Par exemple, supposons que vous ayez une telle ressource de blog (parent). http://example.com/myblog
Ensuite, des entrées de blog individuelles (ressources enfants), http://example.com/myblog/entries/1
Peut être fourni comme.
Ajoutez des données à une ressource existante. La différence avec la précédente est de savoir si les ressources ont une relation parent-enfant. http://example.com/myblog
Effectue un traitement qui ne peut pas être géré par d'autres méthodes. Cependant, cette utilisation s'écarte de l'interface unifiée dans ROA, il est donc préférable de ne pas l'utiliser autant que possible.
PUT Il existe deux façons d'utiliser PUT.
En regardant cela seul, il peut sembler que le rôle est similaire à POST.
Créer une ressource enfant pour la ressource parent = Créer une nouvelle ressource Ajout de données aux ressources = mise à jour des ressources existantes
En fait, il ne semble pas y avoir de réponse claire. Cependant, les directives suivantes existent en tant que directives de conception.
Il n'y a pas de réponse correcte à cela, mais il y a quelques directives de conception: Lors de la création d'une ressource avec POST, le client ne peut pas spécifier l'URI de la ressource. La décision sur l'URI appartient au serveur. Inversement, lors de la création d'une ressource avec PUT, l'URI de la ressource est déterminée par le client. (Omis) En général, le fait que le client puisse déterminer l'URI d'une ressource signifie que le programmeur qui crée le client est familier avec l'implémentation interne du serveur (quels caractères sont autorisés dans l'URI, quelle est la longueur limite, etc.). Doit être. Par conséquent, PUT a inévitablement une connexion plus étroite avec le serveur. Sauf raison particulière, il est souhaitable de concevoir la ressource à créer par POST et l'URI à décider du côté serveur. [Source: Technologie prenant en charge le Web ── HTTP, URI, HTML et REST]
J'ai également trouvé une telle question lorsque j'ai étudié la différence entre POST et PUT. Le traitement PUT qui ne se met à jour que dans l'API REST est-il approprié?
En tenant compte de ces contenus, POST est utilisé pour créer de nouvelles ressources et PUT est utilisé pour mettre à jour les ressources.
DELETE Lorsque le client supprime une ressource inutile, il envoie une demande DELETE à cet URI. Envoyez et supprimez la ressource.
C'est tout à propos de l'interface unifiée.
Clad (CRUD) est les quatre principales fonctions requises pour le système. Conditions arrangées de "Créer", "Lire", "Mettre à jour" et "Supprimer"
Parmi les méthodes HTTP, GET, POST, PUT, DELETE satisfont "CRUD"
Nom CURD | sens | Méthode |
---|---|---|
Create | Créer | POST/PUT |
Read | Lis | GET |
Update | mise à jour | PUT |
Delete | Supprimer | DELETE |
Dans Rails, vous pouvez écrire comme suit.
config/routes.rb
Sampleapp::Application.routes.draw do
resources :users
end
Et ce code définit le routage suivant
URL | action | Méthode HTTP | mouvement |
---|---|---|---|
/users | index | GET | Afficher l'écran de la liste des utilisateurs |
/users | create | POST | Processus d'inscription des utilisateurs |
/users/new | new | GET | Afficher l'écran d'enregistrement de l'utilisateur |
/users/1/edit | edit | GET | Afficher l'écran de modification de l'utilisateur |
/users/1 | show | GET | Afficher l'écran des détails de l'utilisateur |
/users/1 | update | PATCH | Processus de mise à jour des utilisateurs |
/users/1 | update | PUT | Processus de mise à jour des utilisateurs |
/users/1 | destroy | DELETE | Processus de suppression de l'utilisateur |
Il est pratique de pouvoir prendre en charge RESTful uniquement avec ce code.
Recommended Posts