Ich arbeite als einfache Rezeption, aber als ich gebeten wurde, eine RESTful-API zu entwerfen, habe ich viel über die RESTful-API recherchiert. Ich habe darüber nachgedacht, wie Pfadparameter, Abfrageparameter und Anforderungskörper richtig verwendet werden, daher möchte ich die Ergebnisse als Erinnerung behalten. (Es sind ziemlich grundlegende Informationen, also für Anfänger.)
--Welche der HTTP-Anforderungen sind Pfadparameter, Abfrageparameter und Anforderungskörper? ――Welche Informationen sollten im Pfadparameter, Abfrageparameter und Anforderungshauptteil enthalten sein?
Ich werde die Erklärung diesem Artikel überlassen. "HTTP-Anfrage" und "HTTP-Antwort" / ITSakura
Ich werde die Erklärung diesem Artikel überlassen. Was ist RESTful API / @ NagaokaKenichi
Zunächst werde ich über Pfadparameter, Abfrageparameter und Anforderungskörper schreiben.
Was von URI gesendet wird, ist der Pfadparameter und der Abfrageparameter.
https://example.com/pathparameter/{pathparameter}?queryparameter1=hogehoge&queryparameter2=fugafuga
Wie Sie dem Beispiel entnehmen können, Nach der Domain mit URI? Was vorher kommt, ist der Pfadparameter. Und was kommt danach? Ist der Abfrageparameter.
Es wird in JSON gesendet, nicht in URI.
{
hoge_name: fugafuga,
description: hogefugahoge,
}
Zum Beispiel sieht es so aus.
Zuerst den Pfadparameter, in den Sie ** die Informationen eingeben, die zur Identifizierung einer bestimmten Ressource ** erforderlich sind.
Angenommen, Sie haben eine Tabelle mit dem Namen group, in der Benutzer wie ↓ gebündelt sind, und möchten von dort aus Benutzer einer bestimmten Gruppe (Gruppe 1) zuordnen.
groups_table
group_id | group_name | description |
---|---|---|
1 | hoge | Es ist eine Gruppe von Hoge. |
2 | piyo | Es ist eine Gruppe von Piyo. |
users_table
user_id | user_name | gruop_id | description |
---|---|---|---|
1 | hoge | 1 | Es gehört zur Hoge-Gruppe. |
2 | fuga | 1 | Es gehört zur Hoge-Gruppe. |
3 | piyo | 1 | Es gehört zur Hoge-Gruppe. |
4 | inu | 1 | Es gehört zur Hoge-Gruppe. |
5 | neko | 2 | Es gehört zur Gruppe der Piyo. |
In diesem Fall ist ** groupId = 1 ** eine ** Information, die zum Identifizieren einer bestimmten Ressource ** erforderlich ist. Das Design und die API, die tatsächlich getroffen werden sollen, lauten also wie folgt.
Design
https://example.com/groups/{group_id}
API, um tatsächlich zu treffen
https://example.com/groups/1
(Ich mag die Endpunktgruppen.)
Geben Sie als Nächstes in Bezug auf die Abfrageparameter ** die Informationen ein, die zum Betreiben und Abrufen einer bestimmten Ressource erforderlich sind **.
Angenommen, Sie möchten 3 Benutzer, die einer bestimmten Gruppe (Gruppe 1) zugeordnet sind, aus der vorherigen Tabelle in absteigender Reihenfolge von user_id abrufen.
In diesem Fall ist die Bedingung ** 3 Fälle ** und ** absteigende Reihenfolge von Benutzer-ID ** ** Informationen, die zum Betreiben und Erfassen einer bestimmten Ressource ** erforderlich sind. Daher sind das Design und die API, die tatsächlich getroffen werden sollen, wie folgt. Werden.
Design
https://example.com/groups/{group_id}?sort=boolean&limit=number
API, um tatsächlich zu treffen
https://example.com/groups/1?sort=false&limit=3
(Die Sortierung ist so eingestellt, dass die aufsteigende Reihenfolge falsch und die absteigende Reihenfolge wahr ist.) Andere scheinen Bedingungen im Zusammenhang mit ** Suche, Filter ** usw. als Abfrageparameter zu behandeln.
Schließlich wird in Bezug auf den Anfragetext ** der hinzuzufügende oder zu aktualisierende Inhalt ** hier eingegeben.
Angenommen, Sie möchten eine bestimmte Gruppe (Gruppe 1) aus der obigen Tabelle aktualisieren.
In diesem Fall ist die Bedingung für ** zu aktualisierenden Inhalt ** normaler ** Inhalt beim Hinzufügen oder Aktualisieren **, sodass das Design und die API, die tatsächlich getroffen werden sollen, wie folgt sind.
Design(URI)
https://example.com/groups/{group_id}
Design(JSON)
{
group_name: "string",
group_description: "string"
}
API, um tatsächlich zu treffen
https://example.com/groups/1
JSON anzufordern
{
group_name: "hogehogehoge",
group_description: "Hogehogehoge Gruppe"
}
Wenn Sie dies berücksichtigen, können Sie möglicherweise auf leicht verständliche Weise entwerfen. Ich lese die GoodParts von O'Reilly Japans Web-API, daher kann ich sie erneut hinzufügen, wenn ich sie lese.
Danke fürs Lesen. Ich wäre Ihnen dankbar, wenn Sie mich über Missverständnisse informieren könnten!