【发布时间】:2015-08-17 17:40:20
【问题描述】:
我在配置 swagger 以查看我的 REST 方法时遇到问题。我在 Eclipse 和 Tomcat 7 中工作。我有以下简单的 REST 方法/类:
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!";
}
}
我正在使用以下 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>
其余服务在http://localhost:8080/SwaggerTest/api/sayHello 上可用,并在浏览器中显示正确的消息。该服务的 Swagger 规范可在 http://localhost:8080/SwaggerTest/api-docs 获得。但是,返回的只是
{"apiVersion":"0.0.1","swaggerVersion":"1.2","apis":[{"path":"/","description":"Say hello class"}]}
GET sayHello() 方法发生了什么?或者这就是它应该返回的全部内容?
任何帮助将不胜感激。提前致谢。
大卫
附: maven 依赖项是
<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>
【问题讨论】:
-
我的 \@Api 和 \@ApiOperation 注释的“值”属性值不正确,但修复此问题并没有改变。更改为 'value="/"' 和 'value="/sayHello"'。同样,这无济于事。
-
您的 web.xml 已将所有与 swagger 相关的内容都注释掉了。你到底希望发生什么?此外,您使用的是旧版本的 swagger-core,以及一组奇怪的依赖项。不知道你是如何得到这个配置的。
-
我更新了帖子以正确使用球衣(我希望)。