当前位置: 首页 > 知识库问答 >
问题:

Swagger(-UI)不显示操作

詹甫
2023-03-14

我有一个spring的网络应用程序,我增加了swagger和swagger-UI。我添加了一个虚拟类来测试Swagger:

import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.annotations.ApiError;
import com.wordnik.swagger.annotations.ApiErrors;
import com.wordnik.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Api(value = "DummyController", description = "Dummy description for the controller")
@Controller
@RequestMapping(value = "/dummy")
public class DummyClassForSwagger {

    @ApiOperation(value = "First dummy output", httpMethod = "GET")
    @ApiErrors({@ApiError(code = 404, reason = "First dummy test") })
    @RequestMapping(value = "/first", method = RequestMethod.GET)
    @ResponseBody
    public String dummyOutputOne() {
        return "Dummy output";
    }

    @ApiOperation(value = "Second dummy output", httpMethod = "GET")
    @ApiErrors({@ApiError(code = 404, reason = "Second dummy test") })
    @RequestMapping(value = "/second", method = RequestMethod.GET)
    @ResponseBody
    public String dummyOutputTwo() {
        return "Second dummy output";
    }
}

构建/部署之后,我可以在swagger页面上看到虚拟类(参见附件1)。问题是,“列表操作”没有显示任何内容。原始输出如下:

<controllerDocumentation>
<apiVersion>1.0</apiVersion>
<apis>
<description>Dummy description for the controller</description>
<operations>
<deprecated>false</deprecated>
<errorResponses>
<code>404</code>
<reason>First dummy test</reason>
</errorResponses>
<httpMethod>GET</httpMethod>
<nickname>dummyOutputOne</nickname>
<notes/>
<responseClass>String</responseClass>
<summary>First dummy output</summary>
</operations>
<path>/dummy/first</path>
</apis>
<apis>
<description>Dummy description for the controller</description>
<operations>
<deprecated>false</deprecated>
<errorResponses>
<code>404</code>
<reason>Second dummy test</reason>
</errorResponses>
<httpMethod>GET</httpMethod>
<nickname>dummyOutputTwo</nickname>
<notes/>
<responseClass>String</responseClass>
<summary>Second dummy output</summary>
</operations>
<path>/dummy/second</path>
</apis>
<basePath>http://localhost:8080/mapserver/core</basePath>
<models/>
<resourcePath>/dummy</resourcePath>
<swaggerVersion>1.0</swaggerVersion>
</controllerDocumentation>

我想,问题是一个缺失的标签“操作”或类似的东西……但我不确定(也不知道,如何修复这一点)。有什么建议吗?

共有1个答案

须巴英
2023-03-14

我也有类似的问题。我收到错误“SwaggerOperation handleIllegalArgumentsException is missing method.”

调试后,我发现controller类中的@exceptionhandler方法没有任何swagger注释,这就是问题的原因。

我注释了我的exceptionhandler方法,swagger ui开始正常工作。

我现在正在弄清楚在spring MVC中应该为exceptionhandler方法使用哪些大摇大摆的注释。

controller类中的ExceptionHandler方法是:

@ExceptionHandler({IllegalArgumentException.class})
public ResponseEntity<?> handleIllegalArgumentsException(IllegalArgumentException e)
{
    LOGGER.error("IllegalArgumentException in user controller", e);
    return new ResponseEntity<>(new ErrorResponseDTO("BAD_REQUEST", e.getMessage()), HttpStatus.BAD_REQUEST);
}
 类似资料:
  • 我有一个带有标头的Spring Boot REST控制器,它可以有多个值: 并使用Springfox实现了Swagger。当我加载Swagger UI时,我只能从版本标题列表中看到并选择v1选项。如何在Swagger UI中显示所有表头值以供选择?如何更改Swagger UI列表中的默认头值?

  • 我已经成功地将swagger集成到我的项目中 现在,我可以点击URLhttp://localhost:8080/myapp/v2/api-docs,看到返回的描述REST API的json。例如。 然后我拉入了swagger-ui依赖项

  • 我正在使用swagger工具来记录我基于Jersey的REST API(我正在使用的swaggerui是在2014年6月下载的,我不知道这个问题是否在以后的版本中得到了解决,但由于我对其代码进行了大量定制,所以我没有选择下载最新版本,而无需再次投入大量时间进行定制)。 到目前为止,我所有的传输对象都有一级深度属性(没有嵌入的POJO)。但现在,我添加了一些返回更复杂对象(两级深度)的rest路径,

  • 我试图塑造Swagger-UI,以便不仅修改那个“名称”字段,还修改一个应用编程接口输入参数的“描述”字段。这里有一个例子,有人似乎成功地做到了这一点,同时利用了@ApiParam和@recestParam:[链接] 到目前为止,我最接近修改描述字段的是以下内容,其中我在@recestParam输入中单独使用了"value"字段: 但是,每当我尝试在单个输入元素上同时使用@ApiParam和@Re

  • 我的应用程序中嵌入了swagger ui。当我在本地运行我的节点应用程序时,UI工作得很好。 但是,当我将UI部署到我的“real”服务器时,我会在我的招摇过市UI的右下角看到一个错误图像: 我确信这是我正在做的事情,这会把事情搞砸,但我不知道。当我通过http访问swagger ui时,它也可以在本地工作。 然而,当我部署时,我通过apache运行并通过https提供服务,我看到一个错误。更糟糕

  • 导致问题的两个endpoint位于根路径上,并且URL中只有一个path参数。它们都在一个具有@requestmapping(“/”)的控制器中,并对它们进行注释; 这两个endpoint工作正常,只是在Swagger呈现HTML时引起了一些问题。如果我删除它们,将显示HTML。我已经尝试将它们自己移动到控制器中,看看是否可以阻止swagger在swagger配置中访问它们。但是,它们似乎只需要存