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

Swagger 显示不存在的endpoint。如何摆脱它们?

刘翔宇
2023-03-14

我正在Spring Boot中构建一个非常简单的REST服务,请求如下:

    < li >获取/API/资源 < li >发布/API/资源 < li>GET /api/resources/id < li >删除/api/resources/id

但是当我转到 localhost:8080/swagger-ui.html 时,我得到了一个非常长的不存在的冗余endpoint列表,例如:

  • 删除 /api/resources
  • 补丁 /api/resources
  • 头 /api/resources
  • 选项 /api/resources
  • 补丁 /api/resources/id
  • 头 /api/resources/id
  • 选项 /api/resources/id

那么,如何摆脱它们呢?我已经寻找了一个答案,我只找到了如何将响应列表限制在特定路径上,这不是我的问题。

我不能通过annotation @ API operation(value = " XYZ ",hidden = true)隐藏它们,因为这些请求不存在于我的控制器代码中。

这是我的SwaggerConfig.java课堂:

@Configuration
@EnableSwagger2
class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(regex("/api.*"))
                .build();
    }
}

顺便说一句,显然我在/v2/api文档中遇到了404错误,但我认为这不是我的问题,因为斯威格显示了正确的endpoint列表,但也显示了许多不存在的endpoint。虽然我还没有找到404错误的解决方案,但我不知道我是否应该在意。

共有2个答案

邢永安
2023-03-14

是的,或者您使用@GetMapping(显然对于GET方法)或@PostMapping用于POST,并且您不需要指定方法。https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/GetMapping.html

陆宝
2023-03-14

事实证明,我的控制器代码是问题所在:

 //@RequestMapping("/resource/{id}")
 @RequestMapping(value = "/resource/{id}", method = RequestMethod.GET)

必须在任何地方指定@RequestMapping方法才能在 Swagger 中获取正确的终结点列表,即使 REST 服务在没有指定这些终结点的情况下工作正常。

 类似资料:
  • 问题内容: 到目前为止,给我带来了很多麻烦,所以我想摆脱它。尽管spring框架文档清楚地说明了应该做的事情,但实际上 并没有摘要列表。 所以我一直坚持删除并得到错误 -在名称为的中找不到带有请求的映射 对于所有应该由控制器类解决的Url(在这种情况下:)。有什么建议可以让我了解更多信息吗?我非常想知道到底由代表什么标签。 问题答案: 你可以用来自定义定义的每个bean 。现在,javadocs详

  • 问题内容: 到现在为止,给我造成了很多麻烦,所以我想摆脱它。尽管spring框架文档清楚地说明了应该做的事情,但实际上 并没有摘要列表。 所以我坚持删除并现在得到错误 WARN osweb.servlet.PageNotFound-在DispatcherServlet中,名称为’workoutsensor’的URI [/ webapp / trainees]的HTTP请求未找到映射 对于所有应该由

  • 在一个基于NodeJS的项目中,loopback-component-explorer(2.7.0)附带的Swagger没有显示HTML页面中的“参数”,我们可以在其中为Restendpoint提供所需的params,而不管http动词(例如GET、POST和PATCH等)。必须remoteMethod(...)定义遵循一些大摇大摆的要求吗? 谢了。

  • 我创建了一个新的Web Api项目,添加了ASP.NET标识并配置了OAuth,如下所示: 谢了。 另外,我应该说Swagger文档对我所有的控制器都适用,只是我忽略了一个明显的方法--如何登录。

  • 问题内容: 我希望该日期段从“ 2011-01-28”到“ 2011-02-01”的重叠期从“ 2011-02-01”到“ 2011-02-01”(在同一天),但是确实如此不是! PostgreSQL期望精确的终点匹配不是匹配的…如何摆脱这一点?我希望它将上述情况视为重叠。 返回false,而我希望它返回true。 问题答案: 一种解决方法,即对您的情况可能有意义,也可能没有意义-将日期转换为时间

  • 我有JavaWebService代码在我的eclipse。我使用了@WebService@Webmethod,@XmlElements,@XmlType,@XmlAccessorType 现在我正在使用cxf框架中的java2ws命令生成wsdl。这是命令 我的wsdl文件包含agr0作为我不想要的名称,因为当我将其导入SoapUI时。它正在字段周围添加标记。 下面是带有arg0的wsdl部分 下