2015-01-21 14 views
5

W moim interfejsie API RESTful wszystkie zasoby rozszerzają bazę Spring ResourceSupport, aby zapewnić zgodność z zasadami hateoas według projektu. Na przykład:Zasoby Swagger i RESTful spring hateoas

public class PoolResource extends ResourceSupport { 
    private String name; 
    ... 
} 

Używam również Swagger, i zastanawiałem się: czy jest to możliwe do skonfigurowania Swagger-ui jakoś ignorować właściwości pochodzących z ResourceSupport?

enter image description here

(Swagger-ui zapewnia miły i łatwy frontend API. Jako jeden z głównych zalet korzystania Swagger, API jest łatwe do zrozumienia i bawić się z API dla tych, którzy są nawet nie zna się z REST API ... dopóki "linki" i "relacje" pojawiają się na zdjęciu.)

+9

Jeśli nie chcesz hipermedii, dlaczego używasz Spring HATEOAS? Jeśli chcesz hipermedii, dlaczego używasz Swagger (który aktywnie podważa hipermedia)? –

+1

Chcę hipermedia. Po zbadaniu zasad RESTful zrozumiałem korzyści płynące z posiadania hipermedii, więc naprawdę chciałem zaprojektować interfejs API [level 3] (http://martinfowler.com/articles/richardsonMaturityModel.html). To jest powód używania Spring HATEOAS. Jednak większość użytkowników API wciąż nie zna hipermedii i nie rozumie, dlaczego jest w ogóle dobra. Dla nich swagger zapewnia bardzo fajny widok pełnego interfejsu API. Bardzo dobrze jest ją komukolwiek zaprezentować i łatwo ją zrozumieć, nawet od mojej babci po starszego programistę. Co masz na myśli, że Swagger "podważa hipermedia"? – istibekesi

+2

Większość odpowiedzi sugeruje, żebym nie używał chowańca, [chwała REST] (http://martinfowler.com/articles/richardsonMaturityModel.html) rozwiąże większość moich pytań. Okej, więc wyobraźmy sobie, rzucaję się chwiejnie. To prowadzi mnie do takich pytań niż: - Mam zasób 'Pool'. Co się stanie, jeśli mam nowo zainstalowany system, bez istniejącej instancji puli, więc nie mogę pobrać puli. Jak utworzyć (POST) pulę niż? Jak wygląda basen? - A co z polami opcjonalnymi? Walidacje? Wymagane ... itp.? - A co z dokumentacją "offline"? – istibekesi

Odpowiedz

0

Jedynym rozsądnym sposobem na ukrycie byłoby ukrywanie go przed samym modelem (są kilka sposobów na to, ale jeśli używasz Spring MVC, nie jestem pewien, co obsługuje swagger-springmvc).

Teoretycznie możesz zhakować plik swagger.js, aby go ukryć, ale to jest cała przygoda.

6

Proponuję wyrzucić swagger i użyć restclient jak Postman. Listonosz sprawia, że ​​linki udostępniane przez kliknięcia wiosna-hateo są klikalne, dzięki czemu możesz szybko poruszać się po interfejsie API. Jeśli chcesz podać dodatkowe informacje/dokumentację, możesz zapisać te żądania w zbiorze żądań w programie Listonosz i wyeksportować je do dystrybucji. Po tym, jak wypróbowałem kilka narzędzi dokumentujących reis apis, w tym raml, swagger, pasiekę i wreszcie kolekcje Listonosza w połączeniu z hateaos, stwierdziłem, że to ostatnie jest tym, z czego jestem najbardziej zadowolony.

0

ze sprężyną REST Danych 2.4.0.RELEASE, masz teraz wiele form metadanych:

  • ALPS
  • JSON Schema
  • zainstalować HAL Browser poprzez wiosna-data-Rest-Hal-przeglądarce moduł i surfowanie za pośrednictwem hipermedia
0

Każdy wyglądał HAL Browser

http://api.opensupporter.org/hb2/browser.html#/api/v1

To pomaga wizualizować sieć relacji między zasobami, więc nie robi koniecznie pokazać przykłady żądań do zasobu, ale ma obszarów do wyświetlenia dokumentacji .

Myślę, że byłby to łatwiejszy sposób na samodzielne udokumentowanie realizacji Hateos w pewnym zakresie. Być może jeden z hipermedialnych linków może być witryną oszałamiającą lub Dopuszczalne wartości mogą znajdować się w dokumentach wymienionych powyżej.

Powiązane problemy