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

与Springboot大摇大摆3:无法推断出你的基地

经福
2023-03-14

我使用Springboot大摇大摆3:

<!--          SWAGGER                               -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

我对所有endpoint使用默认的/api前缀。

这就是我如何配置我的SwaggerConfig:

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    public static final String AUTHORIZATION_HEADER = "Authorization";
    @Bean
    public Docket api() {
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .securityContexts(Collections.singletonList(securityContext()))
                .securitySchemes(Collections.singletonList(apiKey()))
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build().pathMapping("/api");

        return docket;
    }

    private ApiKey apiKey() {
        return new ApiKey("JWT", AUTHORIZATION_HEADER, "header");
    }
  // ......

}

当我尝试访问我的swagger-ui http://myhost/swagger-ui 我得到一个弹出窗口,其中包含此消息无法推断基本URL。这在使用动态 Servlet 注册或 API 位于 API 网关后面时很常见。基本 URL 是提供所有 swagger 资源的根。例如,如果api在 http://example.org/api/v2/api-docs 时可用,则基本url http://example.org/api/。请手动输入位置:要求我定义位置。

当我手动输入前缀:< code>http://myhost/api时,一切正常。

任何想法如何定义我的REST API前缀吗?

共有1个答案

谭文林
2023-03-14

你的问题我也碰到过,我也用swagger 3。最后,我发现是< code > @RestControllerAdvice 导致了这个问题,我使用@ RestControllerAdvice来控制一个统一的响应体。

@RestControllerAdvice
public class ResponseAdvisor implements ResponseBodyAdvice {
    
      @Override
      public boolean supports(MethodParameter methodParameter, Class aClass) {
        return true;
      }
    
      @Override
      public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
       // do something to package response body o
    }

所以我修改<代码> @RestControllerAdvice(基地

 类似资料:
  • 我有一个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的文档框架。

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

  • 理想情况下,我们将有一个显示所有标记为public的控制器/方法的大摇大摆的页面,以及另一个显示所有endpoint的密码安全endpoint。这可能吗?

  • thoses线有什么问题 “data”属性应该是$ref中给出的模式类型的数组,但这是结果 好的,似乎正确的方法是tu把$ref直接放在items键下,我的问题是使用保留键“status”,那么,我如何在对象模式中使用保留键呢? 在我的客户机模式中,我将属性status放了两次,但我没有看到它已经存在,所以当我更改属性名时,它起作用了,我在想“status”可能是一个保留的关键字。