2012-09-17 15 views
22

Jednym z kluczowych punktów budowy RESTful API jest HATEOAS. Teraz, Jersey oferuje zdolność łączenia, która jest całkiem dobra (patrz this link). Ale widziałem projekt HAL Specification i wydaje się być dobrze przemyślanym dziełem.Implementuj HATEOAS z HAL na Jersey

Interesuje mnie, jeśli istnieje kilka lib, które ułatwia dostosowanie się do HAL na Jersey. Widziałem odniesienia wspomniane w projekcie, takie jak https://github.com/HalBuilder. Ale używam bezpośredniego zestawiania POJO i nie wiem, jak połączyć to z Halbuilderem.

Czy jest więc już pewna biblioteka zawierająca HAL na Jersey? A może mogę użyć jakiegoś filtra, aby ręcznie poprawić POJO? Jeśli tak, czy ktoś może mi wskazać, gdzie szukać, aby to osiągnąć?

+4

O Boże, jeszcze jeden spec przez kogoś, kto uważa, że ​​przestrzenie nazw są złe i wydaje się, że tylko częściowo wie o istniejącej pracy w tej dziedzinie. (Nie przejmuj się mną, to nie twoja wina, po prostu przygnębiaj tak wielu ludzi, których nigdy się nie nauczyłeś.) Westchnienie ...) –

+0

Nie ma problemu, może możesz mi wskazać na istniejącą pracę? Jestem nowy w REST i staram się go obejść. – Sponiro

+0

@DonalFellows Jaką inną pracę? Czy masz na myśli inny standard dla Hypermedia JSON?Czy powinieneś po prostu użyć XML dla Hateoas? Pomiędzy GitHUB, Facebook, Google itp. Każdy RESTful API wydaje się używać nieco innego formatu do reprezentowania linków odkrywania, ponieważ nie istnieje standard dla JSON. Co jest złego w używaniu warstwy HAL lub innych, takich jak standard, a następnie posiadania biblioteki takiej jak Halbuilder, aby ułatwić jej implementację? –

Odpowiedz

1

Nawet jeśli nie jest to odpowiedź, miałem za mało znaków umieścić go w komentarzu :)

Jeśli jesteś naprawdę nowy odpocząć, myślę, że jesteś zaczynają prawdopodobnie w niewłaściwy sposób . Nie znam dokładnie twoich wymagań, ale jeśli chcesz się tylko uczyć, zacznij od łatwej usługi REST, użyj Web API z .net lub czegoś podobnego w Javie (wystarczy prosty serwlet) i spróbuj wdrożyć usługę, która używa tylko narzędzi dostarczanych przez http (czasowniki, nagłówek żądania i ładunek, komunikat odpowiedzi). Szablon zasad REST API opracowany przez Marc Massé może być dobrym odnośnikiem do nauki. Stwórz swój własny protokół komunikacyjny z POJO lub POCO, a gdy naprawdę będziesz mógł zrobić REST i jak to działa, możesz użyć frameworka, aby ułatwić sobie pracę.

Jeśli zaczynasz z ramy można przegapić istotę koncepcji ...

Mam nadzieję, że to pomaga!

+0

Mogę tylko sekundować. Uczy wiele na wielu poziomach, bez dostania się do piekła ramowego. Najważniejszą rzeczą, jakiej można by się nauczyć, jest to, jak odróżnić dobre ramy od złego. –

0

To bardzo mało, które jest wymagane do przylgnięcia do HAL. Sugeruję, abyś przetoczył swoją własną mini-bibliotekę, w której owijasz POJO w obiektach HAL. W ten sposób otrzymasz kod w taki sposób, w jaki go lubisz i będzie on prostszy niż HalBuilder.

2

Nie mogę znaleźć żadnego bezpośredniego wsparcia dla tego w Jersey, ale powinny istnieć sposoby, aby dostosować marshallera, którego używa Jersey do zamiany twoich POJO na JSON. (Albo za pomocą HalBuilder lub stworzyć jakiś HAL-kompatybilny kod własne)

Jeśli używasz Koszulki JAXB based JSON support, przyjrzeć BootstrapTypeConverterTest w kodzie źródłowym jettison który pokazuje, jak konwerter może być użyty do cusomize wyjście JSON. Konwersja testów jednostkowych do/z JSON powinna być prostym zadaniem, a projekt zignorowany ma dobre przykłady.

Jeśli używasz koszulki "POJO Support"-method, zobacz JacksonHowToCustomSerializers, aby uzyskać podobny przykład tworzenia niestandardowych serializerów.

(Jeśli JAXB jest zaangażowany, można również zrobić fajne rzeczy jak processing custom annotations.)

Prawdopodobnie masz całkiem dobry pomysł, w jaki sposób obiekty (wejście) wygląda i jaki kod JSON (wyjścia) można oczekiwać, więc tworzenie testów jednostkowych dla tych konwersji powinno być stosunkowo prostym zadaniem.

+1

'halbuilder-jaxrs' oferuje przyjemną integrację. Nie zapomnij zarejestrować 'JaxRsHalBuilderSupport' jako programu piszącego treści wiadomości. –

+0

Idę z https://github.com/Nykredit/jackson-dataformat-hal, wygląda lekki i elastyczny. – sschrass