2015-09-11 12 views
8

Dlaczego odniesienia self and related różnią się w poniższym zasobie JSONAPI? Czy nie wskazują na ten sam zasób? Jaka jest różnica między przechodzeniem na /articles/1/relationships/tags i /articles/1/tags?JSONAPI - Różnica między self i pokrewnymi w zasobach linków

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

Odpowiedz

8

Możesz przeczytać o tym tutaj: https://github.com/json-api/json-api/issues/508.

Zasadniczo, z odpowiedzią /articles/1/relationships/tags będzie reprezentowany związek między articles a tags. Odpowiedzią może być coś takiego (co można umieścić w swoim pytaniu):

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

Ta odpowiedź daje tylko niezbędne dane (w atrybucie danych pierwotnych - danych) do manipulowania relacji, a nie zasoby związane z relacji . Mając na uwadze powyższe, można nazwać /articles/1/relationships/tags jeśli chcesz tworzyć nowy związek, dodać nowy tag (zasadniczo aktualizowania relacji) do artykułu czytać które tagi należą do artykułu (trzeba tylko tożsamość, aby szukać ich na serwer) lub usuń znaczniki artykułów z artykułu.

Z drugiej strony, nazywając /articles/1/tags odpowie tagów jak danych pierwotnych z wszystkich innych właściwości, które mają one (artykuły, relacje, linki i inne najwyższego poziomu atrybutów takich m.in., podkreślony tekst, linki i/lub jsonapi).

+0

Czy chcesz wysłać ładunek do łącza automatycznego, jeśli próbujesz utworzyć lub usunąć związek? Co to oznacza: "przeczytaj, które tagi należą do artykułu (potrzebujesz tylko tożsamości, aby wyszukać je na serwerze)" Jaki byłby link do odczytywania tagów należących do artykułu? Czy to nie to samo, co odwiedzanie root/articles/1/tags? – Jwan622

0

Są różne. Oto przykład z mojego projektu.

Spróbuj Get http://localhost:3000/phone-numbers/1/relationships/contact dostaniesz odpowiedź tak: { "links": { "self": "http://localhost:3000/phone-numbers/1/relationships/contact", "related": "http://localhost:3000/phone-numbers/1/contact" }, "data": { "type": "contacts", "id": "1" } } Ty nie uzyskać attributes i relationships który jest prawdopodobnie chcesz odzyskać.

Następnie Spróbuj Get http://localhost:3000/phone-numbers/1/contact dostaniesz odpowiedź tak: { "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" } } } } } Można widzieć pobierane wszystkie potrzebne informacje, w tym attributes i relationships.

Ale powinieneś wiedzieć, że relationships może być użyty do jakiegoś celu. Przeczytaj http://jsonapi.org/format/#crud-updating-to-one-relationships jako próbkę.

Powiązane problemy