Warum ist der swagger-ui nicht mit meinen kommentierten REST-Methoden?
Ich habe Probleme beim konfigurieren von swagger zu sehen, wie meine REST-Methoden. Ich arbeite in Eclipse und Tomcat 7. Ich habe die folgende einfache REST-Methode/Klasse:
package com.rest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.annotations.ApiOperation;
@Api( value="/", description="Say hello class")
@Path("/")
public class Hello {
@GET
@Path("/hello")
@ApiOperation(value="/hello", notes="hello method")
public String sayHello() {
return "Hello World!";
}
}
und ich bin mit dem folgenden web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:javaee="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>SwaggerTest</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.wordnik.swagger.jaxrs.json,com.rest</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>
com.wordnik.swagger.jersey.listing.ApiListingResourceJSON,
com.wordnik.swagger.jersey.listing.JerseyApiDeclarationProvider,
com.wordnik.swagger.jersey.listing.JerseyResourceListingProvider
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>SwaggerJerseyJaxrsConfig</servlet-name>
<servlet-class>com.wordnik.swagger.jersey.config.JerseyJaxrsConfig</servlet-class>
<init-param>
<param-name>api.version</param-name>
<param-value>0.0.1</param-value>
</init-param>
<init-param>
<param-name>swagger.api.basepath</param-name>
<param-value>http://localhost:8080/api/</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
</web-app>
Den rest-service ist verfügbar auf http://localhost:8080/SwaggerTest/api/sayHello und stellt die ordnungsgemäße Meldung im browser. Fors Skillung für den service ist verfügbar unter http://localhost:8080/SwaggerTest/api-docs. Aber alle, die zurückgegeben wird, ist
{"apiVersion":"0.0.1","swaggerVersion":"1.2","apis":[{"path":"/","description":"Say hello class"}]}
Was passiert, die HOLEN sayHello () - Methode? Oder ist das alles, es soll zurück?
Jede Hilfe wird sehr zu schätzen wissen. Vielen Dank im Voraus.
David
P. S. die maven-Abhängigkeiten sind
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jersey2-jaxrs_2.10</artifactId>
<version>1.3.12</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>swagger-ui</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-servlet_2.10</artifactId>
<version>1.3.12</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.7</version>
</dependency>
</dependencies>
Sie web.xml hat alles, was swagger-Zusammenhang kommentiert. Was genau erwartest du geschehen? Auch, Sie verwenden eine alte version des Fors-Kern, und ist eine ungerade Reihe von Abhängigkeiten. Nicht sicher, wie Sie diese Konfiguration.
Ich aktualisiert die post zu benutzen, jersey, richtig (hoffe ich).
InformationsquelleAutor David Wood | 2015-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass Sie Fors-core 1,3 produziert Swagger 1.2 Definitionen. Swagger 1.2 war nicht allzu gern des root - ( /) - basierten APIs. Sie können immer noch zeigen, wenn Sie ändern die
value
von@Api
etwas anderes als "/". Dies berührt nicht die API selbst, ebenso wie die Dokumentation gehostet wird.Wenn man ihm die
value
von "/root" zum Beispiel, und gehen Sie dann zu http://localhost:8080/SwaggerTest/api-docs/root - Sie werden sehen, Ihr ausgesetzt-service.Auch, bist du mit einer alten version von beiden Fors-core und Swagger im Allgemeinen. Es sieht aus wie Sie versuchen, zu integrieren, mit Jersey, so dass Sie Folgen können, https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-1.X-Project-Setup-1.5 wie Ihre integration guide. Dies erzeugt Swagger 2.0, die nicht über die gleichen Problem mit root-Ressourcen.
InformationsquelleAutor Ron
Hatte ich nicht gesagt, jersey zu prüfen, die richtigen Pakete in Fors. Insbesondere com.wordnik.stolzieren.jaxrs.Auflistung, hatte Hinzugefügt werden, wie folgt:
Ich dann
Geändert index.html zu Punkt-zu-schwadronieren die api-docs Ort:
$(function () {
var url = window.Lage.Suche.match(/url=([^&]+)/);
Mit diesen änderungen, meine swagger doc ist erhältlich bei http://localhost:8080/RTSServices/api-docs/index.html
Den kompletten web.xml folgt:
Ich denke, man sollte akzeptieren, dass diese Antwort (Ihre eigene) als Antwort auf Ihre Frage ...
InformationsquelleAutor David Wood