簡體   English   中英

昂首闊步不生成REST文檔

[英]Swagger not generating the REST documentation

我試圖讓Swagger自動生成我的REST API的文檔,但是我只得到了部分結果。

我正在使用Resteasy。 我添加了Maven Swagger依賴項

<dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-jaxrs</artifactId>
    <version>1.5.3</version>
</dependency>

然后我配置了我的應用程序對象

package com.myapp.init;


import java.util.HashSet;
import java.util.Set;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.jaxrs.listing.ApiListingResource;
import io.swagger.jaxrs.listing.SwaggerSerializers;


@ApplicationPath("/rest")
public class WebappInit extends Application {

    public WebappInit() {
        BeanConfig beanConfig = new BeanConfig();
        beanConfig.setVersion("1.0.0");
        beanConfig.setSchemes(new String[]{"http"});
        beanConfig.setHost("theIP:8080");
        beanConfig.setBasePath("/myapp/rest/");
        beanConfig.setResourcePackage("the.resource.package");
        beanConfig.setScan(true);
        beanConfig.setPrettyPrint(true);

    }


    public Set<Class<?>> getClasses() {
        Set<Class<?>> s = new HashSet<Class<?>>();


        // here I add my REST WSs
        s.add(ApiListingResource.class);
        s.add(SwaggerSerializers.class);


        return s;
    }

}

然后,我運行Web應用程序(在Wildfly 9服務器上)並轉到URL http://localhost:8080/myapp/rest/swagger.json 那就是我得到的

{
  swagger: "2.0",
  info: {
    version: "1.0.0"
  },
  host: "10.17.36.215:8080",
  basePath: "/devops/rest/",
  schemes: [
    "http"
  ]
}

似乎Swagger無法建立REST文檔,即使我的REST端點可以訪問並已添加到Swagger資源列表中。

可能是什么問題?

謝謝

朱利奧

更新:我檢查了在Swagger初始化方法BeanConfig.classes()中是否正確發現了我的REST類。

您需要在資源類中添加@Api批注。

例如:

package my.sample;
import io.swagger.annotations.Api;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.core.Response;

@Api
@Path ("/mypath")
public class MyResource
{
    @GET
    public Response myEndpoint()
    {
        return Response.ok ();
    }
}

我想我有你的問題。 您的根服務擴展了允許動態構建資源層次結構的Application 我相信swagger甚至不能支持該技術,因為它在編譯時會生成其元數據(json文件)。

我總是使用基於注釋的REST服務,即每個資源都帶有適當的@Path注釋。 該框架會自動初始化所​​有資源,因此我不必從Application擴展我的根資源並實現getClasses() 在這種情況下招搖可以提取所有的資源,並通過JAXRS注解一樣的分析生成JSON在編譯時文件@Path@PathParam@GET@POST等。

您必須在資源類中添加@Api批注,並在setResourcePackage方法中加載資源包。 它應該做魔術。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM