2015-01-21 10 views
5

In meiner RESTful API erweitern alle Ressourcen die Spring ResourceSupport Basis, um Hassoas Principals von Entwurf zu gewährleisten. Zum Beispiel:Swagger und RESTful Spring hateoas Ressourcen

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

Ich verwende auch Swagger, und ich frage mich: ist es möglich, den Prahlerei-ui irgendwie zu konfigurieren, um die Eigenschaften zu ignorieren von ResourceSupport kommen?

enter image description here

(Swagger-ui bietet einen schönen und einfachen Frontend des API. Als einer der großen Vorteile von Swagger mit der API für die mit der API zu verstehen und zu spielen, um, einfach, die sind nicht einmal mit der REST-API vertraut ... solange die "links" und "rels" ins Bild kommen.)

+9

Wenn Sie keine Hypermedia möchten, warum verwenden Sie Spring HATEOAS überhaupt? Wenn du Hypermedia willst, warum benutzt du Swagger (was Hypermedia aktiv unterminiert)? –

+1

Ich möchte Hypermedia. Nachdem ich RESTful Principals studiert hatte, verstand ich die Vorteile von Hypermedia, also wollte ich wirklich eine [level 3] API (level 3) (http://martinfowler.com/articles/richardsonMaturityModel.html) entwerfen. Das ist der Grund warum Spring HATEOAS verwendet wird. Aber die meisten Benutzer der API sind immer noch nicht bekannt Hypermedia und verstehen nicht, warum es überhaupt gut ist. Für sie bietet Swagger eine sehr gute Sicht auf die gesamte API. Es ist sehr gut, es jedem zu präsentieren und leicht zu verstehen, sogar von meiner Oma zu einem leitenden Entwickler. Was meinst du Swagger "untertreibt Hypermedia"? – istibekesi

+2

Die meisten Antworten schlagen mir vor, nicht Swagger zu verwenden, [Herrlichkeit von REST] (http://martinfowler.com/articles/richardsonMaturityModel.html) wird die meisten meiner Fragen lösen. Okay, stellen wir uns vor, ich schmeiße mich weg. Das führt mich zu Fragen wie diesem: - Ich habe Ressource 'Pool'. Was ist, wenn ich ein neu installiertes System ohne eine vorhandene Poolinstanz habe, sodass ich keinen Pool abrufen kann? Wie erstellt man einen Pool (POST)? Wie sieht der Pool aus? - Was ist mit optionalen Feldern? Validierungen? Erforderlich ... usw.? - Was ist mit "Offline" -Dokumentation? – istibekesi

Antwort

0

Die einzige vernünftige Art, es zu verstecken, wäre, es vor dem Modell selbst zu verstecken (gibt es mehrere Möglichkeiten, das zu tun, obwohl, wenn Sie Spring MVC verwenden, ich bin mir nicht sicher, was Swagger-Springmvc unterstützt).

Sie könnten theoretisch swagger.js hacken, um es zu verstecken, aber das ist ein ganzes Abenteuer.

6

Ich würde vorschlagen, Swagger wegzuwerfen und einen Restclient wie Postman zu verwenden. Postman macht die von Spring-hateoas bereitgestellten Links klickbar, so dass Sie schnell durch die API navigieren können. Wenn Sie zusätzliche Informationen/Dokumentationen bereitstellen möchten, können Sie diese Anforderungen in einer Anforderungssammlung in Postman speichern und zur Verteilung exportieren. Nachdem ich mehrere Dokumentationstools für Restapis ausprobiert habe, darunter Raml, Swagger, Imkerei und schließlich Postman-Sammlungen in Kombination mit Hateaos, habe ich festgestellt, dass letzteres das ist, mit dem ich am meisten zufrieden bin.

0

mit Spring Data REST 2.4.0.RELEASE, Sie haben jetzt mehrere Formen von Metadaten:

  • ALPS
  • JSON Schema
  • Installieren Sie den HAL-Browser über Feder-data-rest-hal-Browser modul und surfen über die hypermedia
0

Jeder sah HAL Browser

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

Es hilft, das Netz von Beziehungen zwischen den Ressourcen sichtbar zu machen, so tut unbedingt Anfrage Beispiele für eine Ressource zeigen, aber hat Bereichen Dokumentation angezeigt werden .

Meine Gedanken sind, es wäre ein einfacher Weg, um eine Hateos-Implementierung in gewissem Maße selbst dokumentiert zu bekommen. Und vielleicht könnte einer dieser Hypermedia-Links eine prahlerische Webseite sein oder Akzeptable Werte könnten in den Dokumenten sein, die ich oben erwähnt habe.