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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top