Angenommen, ich habe eine JavaScript-Webanwendung, die vollständig eine RESTful-API für Daten verwendet.
Angenommen, diese Anwendung verfügt über ein Datenformular und ich bearbeite einen Datensatz unter / product / 12345. Beim Erstellen des Formulars stelle ich eine REST-Anforderung an / product / 12345 und erhalte JSON-Daten:
{
"id": 12345,
"name": "Some Product",
"active": true,
"sales_user_id": 27
}
Daher enthält mein Formular möglicherweise eine Dropdown-Liste zur Auswahl eines Verkäufers. Ich muss diese Liste ausfüllen. Woher sollen die Daten kommen? Was ist der gebräuchlichste Ansatz?
Wäre es sinnvoll, sie in die / product / 12345-Anforderungsantwort aufzunehmen?
{
"id": 12345,
"name": "Some Product",
"active": true,
"sales_user_id": 27,
"sales_users": [
{"id": 1, "name": "Anna Graham"},
{"id": 2, "name": "Dick Mussell"},
{"id": 3, "name": "Ford Parker"},
{"id": 4, "name": "Ferris Wheeler"},
{"id": 5, "name": "Jo King"}
]
}
Was ist mit dem Erstellen eines neuen Datensatzes? Sollte meine API auch auf GET / product / new antworten und Folgendes tun?
{
"sales_users": [
{"id": 1, "name": "Anna Graham"},
{"id": 2, "name": "Dick Mussell"},
{"id": 3, "name": "Ford Parker"},
{"id": 4, "name": "Ferris Wheeler"},
{"id": 5, "name": "Jo King"}
],
"categories": [
{"id": 1, "name": "Category 1"},
{"id": 2, "name": "Category 2"},
{"id": 3, "name": "Category 3"},
{"id": 4, "name": "Category 4"},
{"id": 5, "name": "Category 5"}
],
"etc": [ ... ]
}
Antworten:
Ich neige zu sehr einfachen, eng fokussierten Endpunkten. Ich würde eine Anfrage an einem Ort wie / sales_users erwarten, die alle Vertriebsbenutzer zurückgibt.
GET / sales_users:
In ähnlicher Weise würde ich einen separaten Endpunkt hinzufügen, wenn Sie eine Liste mit Kategorien haben möchten.
GET / Kategorien:
Ich würde kein GET / product / new bauen. Stattdessen würde ich in Ihrer App ein Formular erstellen, um neue Produkte hinzuzufügen, die die entsprechenden Anforderungen zum Auffüllen der Listen kennen (z. B. GET / Kategorien, GET / sales_users usw.).
quelle
Unter der Annahme, dass die Liste der Vertriebsmitarbeiter relativ statisch ist, möchten Sie wahrscheinlich einen separaten API-Aufruf
/salesusers
, den Sie einmal aufrufen (beim Laden des Formulars usw.) und speichern, damit Sie diese Daten nicht jedes Mal neu anfordern müssen Zeit. Denken Sie daran, dass Sie in REST Ihre API nach Ressourcen organisieren und Vertriebsmitarbeiter Ressourcen logisch von Produkten trennen.Wenn Sie anrufen
/product/new
, möchten Sie nur Daten für ein neues Produkt senden, das möglicherweise eine sales_user-ID enthält, aber nichts weiter. Änderungen an einem sales_user selbst wären ein separater Aufruf.quelle