2

我们已经开始使用 REST api 开发一个网络应用程序,我找到了 Swagger,我真的很想要它......但是,我正在努力弄清楚如何将它添加到我们的应用程序中。该应用程序是这样声明的(假设的):

package hello.world;

import org.glassfish.jersey.server.ResourceConfig;

public class CloudApplication extends ResourceConfig {
    public CloudApplication() {
        // Add all resources from hello.world
        packages("hello.world", "com.fasterxml.jackson.jaxrs");
    }
}

该项目有一个这样的 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    <display-name>hello.world</display-name>
    <servlet>
        <servlet-name>hello.world.CloudApplication</servlet-name>
        <async-supported>true</async-supported>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello.world.CloudApplication</servlet-name>
        <url-pattern>/hw/*</url-pattern>
    </servlet-mapping>
</web-app>

我的 pom.xml 文件包含

...
<dependency>
    <groupId>com.wordnik</groupId>
    <artifactId>swagger-jaxrs_2.9.1</artifactId>
    <scope>compile</scope>
    <version>1.3.0</version>
</dependency>
...

查看https://github.com/wordnik/swagger-core/tree/master/samples,我发现所有不同的设置,但我不知道该使用哪个。https://github.com/wordnik/swagger-core/tree/master/samples/java-jaxrs似乎是正确的,但是我可以只使用资源配置来保留当前的项目结构吗?/samples/java-jaxrs 似乎需要很多 web.xml 的东西......我可以用代码来代替吗?有样品吗?

我对 Web 应用程序没有太多经验,但我很想让这个 Swagger 工作。

//乔纳斯

4

1 回答 1

1

嗯,有点痛。我最终得到了以下结果,也许这只是另一种会让您感到困惑的设置,但也许它也适用于您:

我使用一个小的引导类来配置这样的招摇:

public class SwaggerBootstrap extends HttpServlet {

    @Override public void init(ServletConfig servletConfig) {

        ConfigFactory.config().setBasePath(basepath);
        ConfigFactory.config().setApiPath(apipath);
        ConfigFactory.config().setApiVersion(apiversion);
        ConfigFactory.config().setSwaggerVersion(com.wordnik.swagger.core.SwaggerSpec.version());
    }
}

我的 web.xml 包含:

<init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>com.wordnik.swagger.jersey.listing</param-value>
</init-param>

<servlet>
   <servlet-name>JerseyJaxrsConfig</servlet-name>
   <servlet-class>com.wordnik.swagger.jersey.config.JerseyJaxrsConfig</servlet-class>   
   <load-on-startup>2</load-on-startup>
</servlet>

<servlet>
    <servlet-name>SwaggerBootstrap</servlet-name>
    <servlet-class>my.path.SwaggerBootstrap</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>

我的 pom 提取物在这里:

<dependency>
    <groupId>com.wordnik</groupId>
    <artifactId>swagger-jersey2-jaxrs_2.10</artifactId>
    <version>1.3.4</version>
</dependency>

<dependency>
    <groupId>com.wordnik</groupId>
    <artifactId>swagger-jaxrs_2.10</artifactId>
    <version>1.3.4</version>
</dependency>

祝你好运;)

于 2015-01-30T14:35:53.187 回答