2012-03-09 12 views
46

Ho un URL REST per ottenere tutti gli utenti formattato in questo modo: http://example.com/usersgiusto riposo URL formattata con intervalli di date

Per ottenere un singolo utente da ID: http://example.com/users/12345

Per ottenere le offerte tutti gli annunci di: http://example.com/users/12345/bids

Per ottenere le offerte di tutto l'utente tra due date: http://example.com/users/12345/bids/?start=01/01/2012&end=01/31/2012

o dovrebbe essere così: http://example.com/users/12345/bids/start/01012012/end/01312012

Sono inclinato verso il primo URL dell'intervallo di date in cui l'inizio e la fine non sono entità nel dominio. Qual è il modo corretto per formattare un URL REST con un intervallo di date?

Grazie,

Tom

+2

Suggerirei di inserire le date nel formato ISO 8061: 2012-01-31. Ciò evita l'incertezza sul fatto che si tratti di mese-giorno-anno o giorno-mese-anno. –

risposta

50

http://example.com/users/12345/bids?start=01-01-2012&end=01-31-2012

Chiedi ai parametri di query sullo stesso "livello", come le offerte (rimuovere la barra prima del punto di domanda). Ma probabilmente vorrai avere il supporto se forniscono solo un parametro di query. Quindi, se hanno fornito solo "start", otterrebbero tutte le offerte dopo quella data, o se hanno fornito solo "fine" otterrebbero tutte le offerte prima di quella data.

Il ragionamento che è che i parametri di ricerca sono buoni per ottenere un sottoinsieme dei risultati di una richiesta GET. Non vanno su un altro livello perché il livello successivo è solitamente un elemento specifico con un identificatore univoco.

6

vorrei andare con http://example.com/users/12345/bids?start=2012-01-01&end=2012-01-31.

  • Non ci dovrebbe essere una barra prima della stringa di query.
  • Evitare l'uso di barre nella stringa di query. Sarà più facile in questo modo.
+1

bene allora si dovrebbe probabilmente usare anche un formato di data leggibile a livello internazionale, che sarebbe '2012-01-31' in base a https://en.wikipedia.org/wiki/ISO_8601. 'MDY' è letteralmente solo USA ..... https://en.wikipedia.org/wiki/Date_format_by_country – Blauhirn

0

se example.com/users/12345 ottiene l'utente con ID 12345, quindi per ottenere tutti gli utenti tramite id dovrebbe essere example.com/users con l'id incluso nella risposta come relazione. (Di solito un collegamento ipertestuale a quella risorsa).

ora per ottenere loro da intervalli di date dovrebbe essere example.com/users/start=01-01-2012 & fine = 01-31-2012

La parte 12345 è l'ID di un singolo utente, è una risorsa, quindi non dovrebbe essere inclusa per ottenere il resto degli utenti.

Come nome del parametro dovrebbe essere significativo. start potrebbe significare qualsiasi cosa, ma start_date è più meschino.

Problemi correlati