2015-09-11 10 views
8

Perché i riferimenti self and related sono diversi nella risorsa JSONAPI sottostante? Non stanno indicando la stessa risorsa? Qual è la differenza tra andare a /articles/1/relationships/tags e /articles/1/tags?JSONAPI - Differenza tra sé e correlati in una risorsa collegamenti

{ 
    "links": { 
    "self": "/articles/1/relationships/tags", 
    "related": "/articles/1/tags" 
    }, 
    "data": [ 
    { "type": "tags", "id": "2" }, 
    { "type": "tags", "id": "3" } 
    ] 
} 

risposta

8

Si può leggere su questo qui: https://github.com/json-api/json-api/issues/508.

Fondamentalmente, con /articles/1/relationships/tags la risposta sarà oggetto che rappresenta la relazione tra articles e tags. La risposta potrebbe essere qualcosa di simile a questo (quello che si mette in questione):

{ 
    "links": { 
    "self": "/articles/1/relationships/tags", 
    "related": "/articles/1/tags" 
    }, 
    "data": [ 
    { "type": "tags", "id": "2" }, 
    { "type": "tags", "id": "3" } 
    ] 
} 

Questa risposta fornisce solo i dati necessari (in attributo di dati primari - dati) di manipolare il rapporto e non risorse connesse con la relazione . Detto questo, si chiama /articles/1/relationships/tags se si desidera creare nuovo rapporto, aggiungere un nuovo tag (in pratica l'aggiornamento rapporto) per articolo, leggere che i tag appartengono articolo (è sufficiente l'identità per cercare loro su server) o eliminare i tag articolo.

D'altra parte, chiamando /articles/1/tags risponderà con tag come dati primari con tutte le altre proprietà che hanno (articoli, relazioni, link, e altri top-level attributi quali includono, testo sottolineato, collegamenti e/o jsonapi).

+0

È necessario inviare un payload al collegamento autonomo se si sta tentando di creare o eliminare una relazione? Inoltre, cosa significa: "leggi quali tag appartengono all'articolo (hai solo bisogno dell'identità per cercarli sul server)" Quale sarebbe il link per leggere i tag che appartengono all'articolo? Non è lo stesso di visitare root/articles/1/tags? – Jwan622

0

Sono diversi. Ecco un esempio dal mio progetto.

Prova Get http://localhost:3000/phone-numbers/1/relationships/contact otterrete la risposta in questo modo: { "links": { "self": "http://localhost:3000/phone-numbers/1/relationships/contact", "related": "http://localhost:3000/phone-numbers/1/contact" }, "data": { "type": "contacts", "id": "1" } } È non hai ottenere la attributes e relationships che è probabilmente si desidera recuperare.

Poi Prova Get http://localhost:3000/phone-numbers/1/contact otterrete la risposta in questo modo: { "data": { "id": "1", "type": "contacts", "links": { "self": "http://localhost:3000/contacts/1" }, "attributes": { "name-first": "John", "name-last": "Doe", "email": "[email protected]", "twitter": null }, "relationships": { "phone-numbers": { "links": { "self": "http://localhost:3000/contacts/1/relationships/phone-numbers", "related": "http://localhost:3000/contacts/1/phone-numbers" } } } } } potete vedere è stato recuperato tutte le informazioni desiderate, tra cui il attributes e relationships.

Ma si dovrebbe sapere che relationships può essere utilizzato per qualche scopo. Si prega di leggere http://jsonapi.org/format/#crud-updating-to-one-relationships come campione.

Problemi correlati