OpenAPI,具有相同方法名的不同端点



我现在正在写一个小的java8webapp,我正在使用openapi3和swagger-ui。现在我有两个包,每个包有一个资源文件夹。当然,他们有不同的@Path,但有相同的方法。两者都只有一个名为"的GET方法;sayHi">

现在,我只需在pom:中添加这个servlet,就包含了OpenAPI的jersey API

<servlet>
<servlet-name>jersey</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.wadl.disableWadl</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>
io.swagger.v3.jaxrs2.integration.resources,
SampleWebappSwagger.api1.resources,
SampleWebappSwagger.api2.resources
</param-value>
</init-param>
<init-param>
<param-name>openApi.configuration.prettyPrint</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>

所以没有任何配置文件或类。一切都很好,但在OpenAPI json文件中,其中一个方法(两个方法都命名为sayHi(得到了一个附加了1的下划线:

{
"openapi" : "3.0.1",
"paths" : {
"/res1/dino1" : {
"get" : {
"operationId" : "sayHi",
"responses" : {
"default" : {
"description" : "default response",
"content" : {
"*/*" : { }
}
}
}
}
},
"/res2/dino2" : {
"get" : {
"operationId" : "sayHi_1",
"responses" : {
"default" : {
"description" : "default response",
"content" : {
"*/*" : { }
}
}
}
}
}
}
}

有没有办法不把它那样附加上去?

我通过创建多个json文件来解决问题。事后看来,这无论如何都更好,因为我现在可以通过下拉菜单将它们全部放入Swagger UI中。

最新更新