Sto usando swagger per prototipare un'API RESTful e sono arrivato a una situazione in cui una proprietà fa parte di una risorsa ma non sempre dovrebbe essere riempita.
Diciamo che la mia risorsa è stores
.
Gli endpoint di base sarebbero:
GET: /stores
- restituisce un elenco di store
GET: /stores/{storeId}
- restituisce un singolo store
Il negozio è definito sulla falsariga di:
Store {
id: integer,
name: string,
pictures: array[]
}
Ma quando si restituisce l'elenco dei negozi, anche restituire l'elenco di immagini di ogni negozio è eccessivo. Le immagini devono essere restituite solo per una singola richiesta di negozio.
Sono confuso su come modellare questa situazione. Su swagger, entrambe le risposte ai metodi sono associate a un oggetto store
.
Devo dividere store
in due oggetti e definizioni in modo che ogni metodo restituisca un tipo diverso anche se solo una proprietà è diversa?
Devo usare un parametro stringa di query in modo che il consumatore possa scegliere se riempire o meno le immagini? Qualcosa sulla falsariga di:
GET: /stores?fillPictures=false
o forse
GET: /stores?detailed=false
Quando si sceglie la seconda opzione, la definizione di un singolo store
sarebbe la stessa indipendentemente dall'accesso all'endpoint. Ciò significherebbe che una proprietà vuota sarebbe trasmessa al consumatore per ogni richiesta non dettagliata (con immagini). Dovrebbe essere una preoccupazione?
Qualcuno può far luce su come gestire questo scenario in modo RESTful? Forse conosci qualche API con un'operazione simile?
Grazie in anticipo.