Accettare un'offerta cinque volte dovrebbe avere lo stesso effetto di accettarla una volta. È idempotente. Quindi dovrebbe essere un PUT.
Si potrebbe voler prendere in considerazione la scelta di un nome diverso per le "richieste". Quando faccio GET /requests/123
, richiedo una risposta che è una richiesta? Questo potrebbe essere un po 'di confusione per i clienti.
Inoltre, cercare di evitare di annidare i propri identificativi di risorsa. Questo può creare problemi per te in seguito. Un'offerta non deve essere necessariamente "sotto" la richiesta corrispondente. Cosa succede quando in seguito vuoi avere offerte corrispondenti a più richieste?
Una buona regola è, se si prenderebbe in considerazione "Gizmo" un'entità in un entity-relationship model, dovrebbe essere una radice a livello di URI, come in GET /gizmos/17
, non GET /widgets/54/gizmos/17
. Un errore comune è quello di dire "Ogni Gizmo ha esattamente un widget correlato, quindi dovrei annidare gli URI Gizmo come estensioni degli URI dei widget."
Di seguito ho un suggerimento su come sarebbero le operazioni. Potresti voler sostituire alcuni dei riferimenti ID con gli URI, ma dipende da te.
POST /requests ---> 201 Created
Location: /requests/123
GET /requests ---> 200 OK
[
{
"requestId": 123,
"offersUri": "/offers?requestId=123",
...
},
...
]
POST /offers ---> 201 Created
{ Location: /offers/456
"requestId": 123,
"amount": 300,
...
}
GET /offers?requestId=123 ---> 200 OK
[
{
"requestId": 123,
"amount": 300,
...
}
]
PUT /offers/456/approval ---> 204 No Content
PUT /offers/456/approval ---> 204 No Content
PUT /offers/456/approval ---> 204 No Content
fonte
2014-11-11 14:52:58
Direi che il POST sarebbe appropriato per accettare una richiesta, potresti usare PUT per creare richieste e offerte. – Shriike