Obecnie pracuję nad implementacją interfejsu API REST. Mam model zasobów z dużą liczbą relacji między poszczególnymi zasobami.Używanie czasowników HTTP LINK i UNLINK w interfejsie API REST
Moje pytanie brzmi: w jaki sposób połączyć dwa istniejące zasoby ze sobą nawzajem (ustanawiając związek) w trybie RESTOWNOWYM?
Jednym z rozwiązań, na które natrafiłem, było użycie czasowników HTTP LINK i UNLINK. Konsument API będzie mógł połączyć dwa zasoby za pomocą LINK i następującego identyfikatora URI:/resource1 /: id1/resource2 /: id2.
Problem z tym rozwiązaniem polega na braku obsługi czasowników LINK i UNLINK. Ani http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html ani http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol nie wspominają o czasownikach i wydają się być w dużej mierze "zapomniane". Jednak oryginalny RFC 2068 stwierdza, że one istnieją.
Bardzo podoba mi się to rozwiązanie. Obawiam się jednak, że wielu klientów/klientów API nie będzie w stanie poradzić sobie z rozwiązaniem z powodu braku wsparcia dla LINK/UNLINK. Czy jest to dopuszczalne rozwiązanie, czy istnieją lepsze i/lub bardziej eleganckie rozwiązania do łączenia istniejących zasobów w RESTful API?
Dzięki
Dlaczego nie utworzyć zasobu łącza, który łączy te dwa zasoby? –
To jest inne rozwiązanie, które rozważałem (jest to w dużej mierze rozwiązane w [tym pytaniu] (http://stackoverflow.com/questions/6324547/how-to-handle-many-to-many-relationships-in-a-refulful -api) Jednak problem polega na tym, że dla każdego rodzaju relacji należy zdefiniować nowy zasób (typ).To nadmiernie komplikuje model zasobów i nie jest szczególnie pragmatyczne (ponieważ twój klient API musi być świadomy o wiele więcej rodzajów zasobów). LINK/UNLINK nie komplikuje tego nadmiernie: nawiązanie relacji jest bardzo przewidywalne, a przez to łatwiejsze w użyciu. Jeśli jednak LINK/UNLINK nie są obsługiwane ... –