2009-07-29 15 views
6

Czego należy unikać przy ustawianiu interfejsu Restful, aby upewnić się, że nie został on przekształcony w RPC?Restful web services

+0

Jeff, nie zaczynaj zdania od czterech spacji - to powie "przecena", aby potraktować je jako blok kodu (bez zawijania słów) i sprawia, że ​​naprawdę trudno go odczytać - z wyjątkiem rzeczywistych bloków kodu, kierunek! :-) –

+0

http://www.pluralsight.com/community/blogs/tewald/archive/2007/04/28/47067.aspx – skaffman

+0

@SLott ... oops .. done – skaffman

Odpowiedz

8

Do:

  • Zaprojektuj swój wniosek być hypertext-driven (Hypermedia jako silnik Application państwa - hateoas).
  • Poświęć więcej czasu i wysiłku na zidentyfikowanie zasobów i tworzenie typów mediów do ich reprezentowania.
  • Pomyśl o całym identyfikatorze URI jako identyfikatorze zasobu i przyjmij, że zmieni się on w przyszłości.
  • Zapewnij wszystkie opcje, aby kontynuować przez aplikację jako łącza w swojej reprezentacji.
  • Pomyśl o swojej aplikacji jako stronie internetowej, która będzie "przeszukiwana" lub "przeglądana" przez klientów.
  • Spróbuj napisać klienta dla swojego interfejsu API i poszukaj, gdzie występuje sprzężenie.

nie:

  • Publish szablony URI w dokumentacji API. Jeśli na przykład musisz mieć szablony parametrów zapytania, upewnij się, że są one częścią definicji rodzaju mediów.
  • Pomyśl o swojej aplikacji jako kolekcji URI, na którą działają cztery czasowniki.
  • Podawać typy mime, takie jak "application/xml" lub "application/json" do klientów.

Aby użyć analogii, interfejs API powinien działać bardziej jak GPS dla klientów, a mniej jak mapa. Będziesz podawać klientom tylko nazwę pobliskiej ulicy.Ale od tej pory mogą robić tylko to, co aplikacja mówi, że mogą zrobić w dowolnym momencie.

Celem tego stylu jest zminimalizowanie sprzężenia między aplikacją a jej klientami. Całe sprzężenie powinno wystąpić w definicji rodzaju nośnika. Upraszcza to rozwój interfejsu API i zapewnia przyjemny mechanizm wersjonowania. Sprawia również, że znikają pytania dotyczące problemów takich jak paginacja.

Większość interfejsów API "RESTful" nie działa zgodnie z tym wzorcem. Jeśli tak, zobacz numer Sun Cloud API i jego backstory.

+0

Dzięki za pomoc w rozpowszechnianiu informacji o REST, dokładnie i wyraźnie. – aehlke

2

Rodzaj szerokiego pytania, ale spróbuję. Po pierwsze, używaj tylko czasowników HTTP, jak były zamierzone. Nie wysyłaj POST na adres URL z argumentem URL, który w zasadzie zastępuje POST i zmienia go w GET lub DELETE. Tak działa SOAP (wszystko jest POST).

+0

To jest poprawne użycie HTTP - doesn nie ma wiele wspólnego z REST. – aehlke

4

Skorzystaj z podstawowego protokołu tam, gdzie to możliwe. Zamiast czasowników w twoim ładunku używaj (na przykład) metod HTTP GET, POST, PUT, DELETE. Twój URI powinien opisywać zasób, ale nie to, co z nim zrobić.

+0

To nie ma nic wspólnego z REST! To po prostu HTTP. – aehlke

+0

Po prostu podałem HTTP jako przykład (ponieważ jest to prawdopodobnie najbardziej popularny protokół w tej sytuacji), aby wzmocnić, że identyfikatory URI powinny być wolne od słów. –

3

Niektóre z rzeczy, które chcesz uniknąć to:

  • buforowanie Ignorując
  • Tunneling wszystko przez GET (lub alternatywnie POST)
  • Ignorując typy MIME

Istnieje dobry artykuł tutaj, który mówi o niektórych wzorcach antyspamowych:

http://www.infoq.com/articles/rest-anti-patterns

Powiązane problemy