gpt4 book ai didi

spring - Java Spring Swagger 不同的 API 文档

转载 作者:行者123 更新时间:2023-12-03 17:31:00 24 4
gpt4 key购买 nike

我有一个 Spring 应用程序,我在其中公开了两个其余接口(interface)以供使用。
一种是内部开发人员,另一种是客户。

Swagger 确实在/swagger-ui.html 下生成了一个很好的文档。
在此 URL 下,它显示了内部和外部用户的文档。

这是我的代码设置:

import org.springframework.boot.info.BuildProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class Swagger2UiConfiguration extends WebMvcConfigurerAdapter {

@Bean(name="restInternalSwaggerApi")
public Docket internalApi(BuildProperties build) {
final Docket docket = new Docket(DocumentationType.SWAGGER_2)
.groupName( "internal" )
.select()
.apis( RequestHandlerSelectors.basePackage("com.xyz.web.internal") )
.build();
return docket;
}

@Bean(name="restPublicSwaggerApi")
public Docket publicApi(BuildProperties build) {
final Docket docket = new Docket(DocumentationType.SWAGGER_2)
.groupName( "public" )
.select()
.apis( RequestHandlerSelectors.basePackage("com.xyz.web.public") )
.build();
return docket;
}
}

现在,我想将这些 swagger-ui 文档分开。这样我们的内部开发人员可以像访问它一样访问它
/documentation/private/swagger-ui.html 和
/documentation/public/api-v1.html

两人不见不散。
怎么做?

我在这里找到了一些提示,但它们对我来说确实没有 build 性:

http://sp ingfox.github.io/springfox/docs/current/#q13和链接资源
Customize endpoints of dockets with springfox Swagger
swagger multiple versions in path
https://github.com/springfox/springfox/issues/963
https://github.com/springfox/springfox/issues/1263#issuecomment-210839308

如果有人愿意让我接受适当的文档,我也会很高兴。
让我知道这个问题是否难以理解以及如何改进它。

有关 java 的 maven 的版本信息:
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>

<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>

换句话说:

我希望 DropDown-Box 访问的不同 API 由不同的 URL 调用:

enter image description here

我想要这个,所以我可以为客户提供具有不同 API 的不同 URL,而不是向我的开发人员同事提供另一个 URL。

最佳答案

  • Swagger-ui 是一个包含 html 和 css 的模块(作为解决方案的 swagger ui 包含的许多 jar 之一),因此如果您需要一个页面(在您的情况下为 api-v1.html),您需要再添加一个 html .
  • 这里是 sources for swagger-ui基于此,我创建了一个修改后的 springfox.js 文件(适用于 2.10.5 版本),它只允许显示 一个 具有 groupName== 页面前缀的案卷(例如,如果您有案卷 .groupName(" external ") 它将显示在页面上 external -swagger-ui.html
  • 因此,为了使其正常工作,您需要总共添加 2 个文件 files placement
    请注意,html 文件也被修改为使用自定义 springfox.js <script src="springfox.js"> </script>而不是 springfox-ui jar 附带的那个。(在我的情况下,它是资源根,如您在屏幕截图中看到的那样)
  • 默认 swagger-ui.html 对此解决方案没有干扰。
  • Working example
  • 关于spring - Java Spring Swagger 不同的 API 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54180617/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com