Come ottenere risorse REST con diversi "metodi" di ricerca?
-
06-07-2019 - |
Domanda
Supponiamo che tu abbia una risorsa / company che ha permesso ai clienti di cercare le aziende pubbliche e che volevi che i clienti potessero cercare le aziende per ticker, posizione, posizione e settore
Manterresti lo stesso URL nel modulo:
- OTTIENI / companies / msft
- OTTIENI / aziende / stati uniti
- OTTIENI / aziende / usa & amp; software
Questo non sembra giusto. Qualche idea?
Soluzione
Che ne dici?
GET /Companies?ticker=MSFT
GET /Companies?country=USA
GET /Companies?country=USA&industry=software
L'importante è identificare la risorsa. La risorsa è "un elenco di società". Il tipo di supporto potrebbe essere un elenco Atom o solo un documento HTML che utilizza tag UL LI. I parametri della query influiscono sul contenuto dell'elenco, ma concettualmente è ancora "un elenco di società".
È possibile creare una risorsa distinta come
GET /Companies/USA
ma ne hai davvero bisogno. Stai per pubblicare in / aziende / Stati Uniti? Stai per eliminare / Aziende / Stati Uniti? Se l'applicazione non richiede la possibilità di eseguire operazioni aggiuntive su questi insiemi specifici di aziende, perché preoccuparsi di modellarle come risorse distinte?
Come nota a margine di questa discussione, mi piace distinguere più chiaramente quando accedo a una risorsa che è una singola entità rispetto a un elenco. cioè.
GET /Companies/USA
GET /Company/MSFT
Mi rendo conto che questo non è il modo in cui funzionano alcuni dei popolari framework Web, ma l'ho trovata una distinzione utile.
Altri suggerimenti
Potresti accettare uno di questi, ma poi restituire un'intestazione Location: che punta all'indirizzo canonico (presumibilmente GET / companies / msft).
Hai solo una società, ma diversi modi per raggiungerla, quindi probabilmente definirei / companies / [nome univoco], e quindi varie cose come / company / byticker / msft e / company / bylocation / usa ecc.