HATEOAS (siehe Richardson's Maturity Model level 3) dreht sich alles um Links, so mit HAL Browser dies wie folgt aussehen würde:
Root:
{
"_links": {
"self": {
"href": "/api/root"
},
"api:group-add": {
"href": "http://apiname:port/api/group"
},
"api:group-search": {
"href": "http://apiname:port/api/group?pageNumber={pageNumber}&pageSize={pageSize}&sort={sort}"
},
"api:group-by-id": {
"href": "http://apiname:port/api/group/id" (OR "href": "http://apiname:port/api/group?id={id}")
}
}
}
Das Add würde einfach ein POST, dass Endpunkt, und dann hätten Sie 2 GET-Methoden.
Dann, wenn Sie auf eine bestimmte Gruppe aufschlüsseln (sagen # 1):
{
"Id" : 1,
"Name" : "test",
"_links": {
"self": {
"href": "/api/group/1" (OR "/api/group?id=1")
},
"edit": {
"href": "http://apiname:port/api/group/1"
},
"api:delete": {
"href": "http://apiname:port/api/group/1"
},
"api:items-query": {
"href": "http://apiname:port/api/bonus?groupId=1"
}
}
}
Hier würde die Bearbeitung einfach ein PUT sein, und dann werden Sie eine DELETE benötigen (siehe Stufe 2 von REST in der gleichen Verbindung), wie für die Elemente, wissen Sie wahrscheinlich am besten, wenn sie nur eine Eigenschaft oder ein anderer Endpunkt sind; Sie könnten sie sogar einbetten, um in demselben Anruf zurückgegeben zu werden, der eine Gruppe abruft.
Warum setzen Sie Operationen ('create',' detail', 'update',' delete', 'search') in URIs? Das ist RPC, nicht REST. –
Ich erkannte, es sollte nur POST/Gruppen - Gruppe PUT/detail/{groupID} zu aktualisieren Gruppe DELETE/detail/{groupID - Gruppe zu löschen –
Ja, das wäre besser. –