1. 程式人生 > >java伺服器使用swagger自動生成API文件

java伺服器使用swagger自動生成API文件

1.下載swaggerui,放入工程resource下

注意編輯index.html

      var url = window.location.search.match(/url=([^&]+)/);
      if (url && url.length > 1) {
        url = decodeURIComponent(url[1]);
      } else {
        url = window.location.toString();
        url = url.substring(0, url.lastIndexOf("/docs")) + "/test/swagger.json";
      }

2.編輯POM

    <dependencies>
        <!-- swagger -->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-jersey2-jaxrs</artifactId>
            <version>1.5.3</version>
        </dependency>
    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>*.properties</include>
                    <include>*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources/swaggerui</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*</include>
                </includes>
                <targetPath>swaggerui/</targetPath>
            </resource>
        </resources>
    </build>


3.編輯Main.java,新增兩個函式。

    import io.swagger.jaxrs.config.BeanConfig;

    public static Server startServer() throws Exception {
        ...

        //swagger
        buildSwagger();
        handlerList.addHandler(buildSwaggerUI());

        ...
    }

    private static void buildSwagger() {
        // This configures Swagger
        BeanConfig beanConfig = new BeanConfig();
        beanConfig.setVersion("1.0.0");
        beanConfig.setResourcePackage("com.test.mavenproject.rest");
        beanConfig.setScan(true);
        beanConfig.setBasePath("/test");
        beanConfig.setDescription("Entity Browser API to demonstrate Swagger with Jersey2 in an "
                + "embedded Jetty instance, with no web.xml or Spring MVC.");
        beanConfig.setTitle("Entity Browser");
    }

    private static ContextHandler buildSwaggerUI() throws Exception {
        final ResourceHandler swaggerUIResourceHandler = new ResourceHandler();
        swaggerUIResourceHandler.setResourceBase(Main.class.getClassLoader().getResource("swaggerui").toURI().toString());
        final ContextHandler swaggerUIContext = new ContextHandler();
        swaggerUIContext.setContextPath("/docs");
        swaggerUIContext.setHandler(swaggerUIResourceHandler);
        return swaggerUIContext;
    }

4.編輯TestJerseyConfig.java

import io.swagger.jaxrs.listing.ApiListingResource;

//packages("com.test.mavenproject.rest");

改為

packages("com.test.mavenproject.rest", ApiListingResource.class.getPackage().getName());

5.編輯服務類

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;


@Api("Session")
@Path("test1")
public class TestResource {
    @Inject
    public TestResource(
    ) {
        
    }
    
    @ApiOperation(
            value = "Get測試"
    )
    @GET
    @Path("get")
    @Produces(MediaType.TEXT_PLAIN)
    public String getTest(){
        return "called Get";
    }
}
更詳細的Api介紹All Classes(swagger-annotation)

完成後訪問 http://伺服器地址:埠/docs