come dovrei cambiare la rappresentazione (non il mimetipo) di una risorsa?

2

Sto osservando come posso modificare la rappresentazione di un payload in fase di esecuzione per vari potenziali vantaggi, ma non sono sicuro di come farlo. Specificamente collezioni.

Matrice di coppie

[{ <resource_uri> : { <entity> }, ...}]

Matrice di oggetti

[<entity>,...]

Matrice di risorse

[<resource_uri>]

Mappa delle entità

{ <resource_uri> : { <entity> }, ... }

Il mio problema è che non sono sicuro di dover inserire queste diverse rappresentazioni degli insiemi in URI diversi, dando loro tipi di mime leggermente diversi, ad es. application/foomap+json o forse utilizza un parametro di query facoltativo ?format=map o% risorsa/entities/map. L'interfaccia utente nasconderà questo, solo per l'accesso al servizio web programmatico (che il "JS dell'interfaccia utente dovrà chiamare).

    
posta xenoterracide 16.03.2014 - 15:34
fonte

3 risposte

1

Per prima cosa dovresti usare i tipi MIME / Contenuto. Il client (dovrebbe) fornire al server tutti i formati di dati che può comprendere e il server restituirà la migliore rappresentazione, oppure lamentarsi che non supporta alcuna delle richieste di formato dati del client. Le stringhe di query vengono generalmente utilizzate per i filtri su risorse che non si adattano perfettamente all'herirachia di URL (ad esempio "/ stationary / penne? Color = black")

In secondo luogo, non è la migliore idea avere molte rappresentazioni simili ma leggermente diverse della risorsa, e non riesco davvero a immaginare perché vorresti farlo.

Puoi sempre ripetere i dati nella tua risposta, se hai una risorsa con dati JSON puoi anche includere l'URL (di fatto dovresti farlo per HATEOS). Il cliente può ignorare i dati a cui non è interessato.

    
risposta data 25.08.2014 - 17:04
fonte
0

TL; DR: tipi non mime. Probabilmente parametri di query

Quando si scrivono le API REST, di solito ho la stessa struttura delle mie risposte, indipendentemente dal tipo MIME. Il tipo mime è solo la rappresentazione particolare della struttura sottostante. Ciò consente a cose come il caching di non interessarsi al tipo di mimo perché i dati sono gli stessi.

L'utilizzo di un parametro di query sembra l'opzione migliore per fornire un modo per variare la struttura effettiva nella risposta.

Anche se mi piace il concetto di creare qualcosa di simile a una risorsa vista che ti permetterebbe di ristrutturare e rinominare altre risposte alle risorse.

    
risposta data 24.03.2014 - 08:56
fonte
0

Il modo più semplice per utilizzare diversi URI. Puoi utilizzare facoltativamente l'intestazione preferibile, se lo desideri.

Ti suggerisco di usare tipi MIME generici standard, come HAL, JSON-LD, ecc ... invece di crearne di personalizzati, così i tuoi clienti non avranno bisogno di scrivere parser personalizzati ...

    
risposta data 18.09.2014 - 16:16
fonte

Leggi altre domande sui tag