Sollte die API beim Entwerfen eines RESTful-Webdiensts so ausgelegt sein, dass sie die ID für Zeichenfolgen für Werte verwendet, die zwischen dem Server hin und her übertragen werden?
Hier ein Beispiel: Angenommen, ich habe eine Mitarbeiterressource mit Status- und Geschlechtsattributen. In der Datenbank Status und Geschlecht und separate Tabellen und damit separates Domain-Objekt, jedes mit seiner eigenen Kennung.
Angenommen, die Kundenanfrage / Mitarbeiter / 1. Dort könnte der Server so etwas zurückgeben ....
Fall 1:
{
"id": 1,
"firstName": "Jane",
"lastName": "Doe",
"active": true,
"gender": {
"id": 1,
"gender": "FEMALE"
},
"status": {
"id": 3,
"status": "FULL_TIME"
}
}
Fall 2:
{
"id": 1,
"firstName": "Jane",
"lastName": "Doe",
"active": true,
"gender": "FEMALE",
"status": "FULL_TIME"
}
Fall 3:
{
"id": 1,
"firstName": "Jane",
"lastName": "Doe",
"active": true,
"genderId": 1,
"statusId": 3
}
Fall 3 scheint am wenigsten sinnvoll zu sein, da der Client keine Ahnung hat, was genderId 1 ist, es sei denn, er dreht sich um und ruft den Server erneut an, um diese Daten abzurufen.
Angenommen, der Client aktualisiert den Benutzer durch:
PUT /employee/1
Sollte die Anforderungsnutzlast die IDs oder eine Zeichenfolge verwenden? In jedem Fall muss das Back-End sie nachschlagen, um sicherzustellen, dass sie gültig sind. Es ist jedoch besser, mit IDs über Strings zu arbeiten.