tutti gli URL per una risorsa devono essere uguali

0

Ho un Resource denominato Company , che può avere Post Risorsa,

Ho un percorso per creare post come: POST /api/company/{companyName}/post .

La mia domanda è se, devo usare un percorso come %codice% o PUT /api/company/{companyName}/post/{postId} per Aggiornamento di risorsa post?

    
posta ghanbari 03.11.2015 - 11:05
fonte

1 risposta

3

Per risorse nidificate come questa troverai entrambe le opzioni.

/api/company/{companyName}/post/{postId}

sarebbe la variante più dettagliata. Mentre

/api/company/post/{postId}

è più conciso (ovviamente richiede che postId sia univoco e che il record abbia un riferimento a companyId).

Per Ruby on Rails questo tipo di percorsi è chiamato shallow nesting e molto spesso usato e raccomandato. Anche se (almeno per Rails) in questo caso avresti ovviamente una terza opzione e omettere completamente la parte aziendale:

/api/post/{postId}

a meno che non ti serva per qualcos'altro all'interno del tuo codice o hai tipi diversi di post che vengono gestiti in modo diverso.

Non ci sono regole chiare per quello scenario (per quanto ne so). Solo un URI deve essere in grado di trovare una risorsa. Puoi persino fare in modo che più percorsi puntino alla stessa risorsa (assicurati solo di non duplicare il codice per gestirli).

Vorrei mantenere le cose semplici, quindi almeno decidere per una variante e implementare tutte le azioni necessarie con quella rotta. Ma dipende principalmente dal tuo caso d'uso e ciò che ha più senso per i client della tua API.

Quindi se implementate PUT e POST con percorsi diversi implementerei entrambi i metodi su entrambe le varianti (se c'è la possibilità che vengano utilizzati). In questo modo il cliente può decidere se desidera utilizzare / api / company / post / {post_id} o preferisce / api / post / {post_id} ma non deve passare da uno all'altro senza alcun motivo apparente.

    
risposta data 03.11.2015 - 11:18
fonte

Leggi altre domande sui tag