Je travaille comme une réception de base, mais quand on m'a demandé de concevoir une API RESTful, j'ai fait beaucoup de recherches sur l'API RESTful. J'ai réfléchi à la façon d'utiliser correctement les paramètres de chemin, les paramètres de requête et les corps de requête, je voudrais donc garder les résultats comme un rappel. (Ce sont des informations assez basiques, donc c'est pour les débutants.)
Je laisserai l'explication à cet article. "Requête HTTP" et "Réponse HTTP" / ITSakura
Je laisserai l'explication à cet article. Qu'est-ce que l'API RESTful / @ NagaokaKenichi
Tout d'abord, j'écrirai sur ce que sont les paramètres de chemin, les paramètres de requête et les corps de requête.
Ce qui est envoyé par URI est le paramètre de chemin et le paramètre de requête.
https://example.com/pathparameter/{pathparameter}?queryparameter1=hogehoge&queryparameter2=fugafuga
Comme vous pouvez le voir dans l'exemple, Après le domaine avec URI? Ce qui précède est le paramètre de chemin. Et ce qui vient après? Est le paramètre de requête.
Il est envoyé en JSON, pas en URI.
{
hoge_name: fugafuga,
description: hogefugahoge,
}
Par exemple, cela ressemble à ceci.
Tout d'abord, le paramètre path, où vous mettez ** les informations nécessaires pour identifier une ressource particulière **.
Par exemple, supposons que vous ayez une table appelée groupe qui regroupe les utilisateurs comme ↓, et que vous souhaitez associer des utilisateurs à un groupe spécifique (groupe 1) à partir de là.
groups_table
group_id | group_name | description |
---|---|---|
1 | hoge | C'est un groupe de hoge. |
2 | piyo | C'est un groupe de piyo. |
users_table
user_id | user_name | gruop_id | description |
---|---|---|---|
1 | hoge | 1 | Il appartient au groupe hoge. |
2 | fuga | 1 | Il appartient au groupe hoge. |
3 | piyo | 1 | Il appartient au groupe hoge. |
4 | inu | 1 | Il appartient au groupe hoge. |
5 | neko | 2 | Il appartient au groupe des piyo. |
Dans ce cas, ** groupId = 1 ** est ** les informations requises pour identifier une ressource spécifique **, donc la conception et l'API à atteindre sont les suivantes.
conception
https://example.com/groups/{group_id}
API pour frapper réellement
https://example.com/groups/1
(J'aime les groupes de points de terminaison.)
Ensuite, en ce qui concerne les paramètres de requête, ** saisissez les informations nécessaires pour exploiter et récupérer une ressource spécifique **.
Supposons que vous souhaitiez associer 3 utilisateurs à un groupe spécifique (Groupe 1) de la table précédente dans l'ordre décroissant de user_id.
Dans ce cas, la condition ** 3 cas ** et ** l'ordre décroissant de user_id ** est ** les informations nécessaires pour exploiter et acquérir une ressource spécifique **, donc la conception et l'API à atteindre sont les suivantes. Devenir.
conception
https://example.com/groups/{group_id}?sort=boolean&limit=number
API pour frapper réellement
https://example.com/groups/1?sort=false&limit=3
(Le tri est défini de sorte que l'ordre croissant est faux et l'ordre décroissant est vrai.) D'autres semblent traiter les conditions liées à la ** recherche, au filtre **, etc. comme des paramètres de requête.
Enfin, concernant le corps de la requête, ** le contenu à ajouter ou à mettre à jour ** est saisi ici.
Supposons que vous souhaitiez mettre à jour un groupe spécifique (Groupe 1) à partir du tableau ci-dessus.
Dans ce cas, la condition du ** contenu à mettre à jour ** est juste ** le contenu lors de l'ajout ou de la mise à jour **, donc la conception et l'API à atteindre sont les suivantes.
conception(URI)
https://example.com/groups/{group_id}
conception(JSON)
{
group_name: "string",
group_description: "string"
}
API pour frapper réellement
https://example.com/groups/1
JSON à demander
{
group_name: "hogehogehoge",
group_description: "groupe hogehogehoge"
}
Si vous gardez cela à l'esprit, vous pourrez peut-être concevoir de manière facile à comprendre. Je lis l'API Web d'O'Reilly Japan, les GoodParts, donc je peux l'ajouter à nouveau si je le lis.
Merci pour la lecture. Je vous serais reconnaissant de bien vouloir me faire savoir s'il y a des malentendus!