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

JavaSpring大摇大摆地展示不同的API文档

谷翰飞
2023-03-14

我有一个Spring应用程序,其中公开了两个rest接口供使用。一个是内部开发人员,另一个是客户。

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.html和
/留档/公共/api-v1.html一样访问它

两人都没有见面。那要怎么做?

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

超文本传输协议://spingfox.github.io/springfox/docs/current/#q13和链接资源
使用springfox Swagger
swagger在path
https://github.com/springfox/springfox/issues/963
中的多个版本自定义目录的endpointhttps://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>

换言之:

我希望下拉框访问的不同API由不同的URL调用:

我想要这样,这样我就可以给客户一个不同的URL,使用不同的API,而不是给我的开发人员同事另一个URL。

共有1个答案

祁建业
2023-03-14

>

  • Swagger-ui是一个包含html和css的模块(swagger ui作为解决方案的许多罐之一),因此如果您需要一个更多的页面(在您的情况下api-v1.html),您需要添加一个更多html.

    下面是swagger-ui的源代码,我在此基础上创建了一个修改过的springfox.js文件(2.10.5版本),该文件允许只显示一个具有group pName==页面前缀的目录(例如,如果您有您的目录. group pName(外部))它将显示在页面上external-swagger-ui.html

    所以为了工作,你需要添加2个文件总文件放置请注意,html文件也被修改为使用自定义springfox.js

    默认swagger-ui.html对此解决方案没有干扰。

    工作示例

  •  类似资料:
    • 我们有一个。NET解决方案,有两个项目: null 当将Swagger UI添加到API项目(不是首选解决方案)时,它根本不起作用,可能是因为自定义控制器选择器 然而,我认为我遗漏了一些明显的东西,因为这感觉像是我们遗漏的一个非常基本的配置设置

    • 我们在我们的泽西应用程序中使用了@Role允许注释来限制用户对应用编程接口某些部分的访问。我们如何在SwaggerUI中显示这些信息? 到目前为止,我已经用@ApiOperation注释了方法以显示in/out参数,并尝试使用@Authorization/@AuthorizationScope,但我只为我们不使用的oauth2显示了它。最接近out case的是ApiKeyAuthDefiniti

    • 我有一个java项目(tomcat webapp)和一些REST Api。我想为他们生成大摇大摆的文档。我从本教程(github)开始。我没有maven我们使用蚂蚁任务。我加入了swagger-annotations-1.5.0。jar和所有随swagger jaxrs jar 1.5.0版本附带的jar(如果有用的话,我可以包括一个完整的列表),我已经注释了一些方法,我有一个如下的配置类: }

    • 有没有人用spring-data-rest配置了swagger。我知道swagger有DocumentationConfig类,它扫描所有spring-mvc请求映射。但是,如何将其用于spring-data-rest,因为没有定义显式的请求映射。非常感谢在这方面的任何帮助。此外,我还想知道,是否有其他支持Spring-Data-REST的文档框架。

    • 我是新手所以我可能错过了什么

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