Restful Services: design URI

1

Sono nuovo per i servizi rilassanti e ho bisogno di qualche chiarimento con la costruzione dell'URI per un servizio riposante.

Supponiamo che la gerarchia dei miei dati sia la seguente: prodotti / tipi / prodotti / ordini.

Questo URI è veramente un URI RESTful:

/ restws / prodotti / tipi / abc / prodids / 1234 / ordini

Quello che sto cercando di uscire da questo URI è elencare tutti gli ordini per tutti i tipi di prodotto di 'abc' con l'ID 1234.

restws è la root di contesto.

È un buon approccio?

    
posta Rest88 21.08.2018 - 20:44
fonte

1 risposta

3

La prima cosa da notare è che la sintassi della "risorsa" raccomandata per gli URI REST è una convenzione che non è sempre facile da applicare ai casi d'uso reali. Quindi, nonostante una linea guida ragionevole, è solo una linea guida.

Detto questo, in genere si utilizzano gli URI con solo elementi di percorso (cioè senza stringa di query) per identificare gli oggetti in base ai rispettivi ID. Quindi, supponendo che i tuoi ordini abbiano ID univoci, sarebbe comune accedervi tramite URI del modulo /restws/orders/1234 . Se un ordine è identificato in modo univoco da un ID ordine e un ID prodotto perché gli ID ordine sono univoci all'interno di un determinato prodotto ma non a livello globale, un URI come /restws/products/1234/orders/567 sarebbe ragionevole.

Tuttavia, se gli ID ordine sono univoci a livello globale e si desidera trovare solo ordini che soddisfano determinati criteri, ad esempio l'abbinamento di un ID prodotto, il tipo e, eventualmente, la data dell'ordine futuro, il prezzo e così via, un formato stringa di query sarebbe più appropriato: /restws/orders?productId=1234&date=2018-08-21 ecc. Quindi il tuo chocie di API dipende in realtà da cosa sono gli ID univoci ("chiavi primarie") dei tuoi ordini e quali sono solo criteri di ricerca che potrebbero corrispondere a zero o più ordini.

Nella maggior parte dei casi è anche una buona idea evitare la ridondanza - ad esempio, mi aspetto che il prodotto con ID specificato sia di un tipo specifico, quindi obbligare l'utente a immettere sia l'ID che il tipo nel percorso URL sarebbe una cattiva API. Ma se gli ID sono unici solo all'interno di un tipo specifico, ovviamente l'utente deve passare entrambi per identificare la risorsa.

    
risposta data 21.08.2018 - 21:08
fonte

Leggi altre domande sui tag