如何在Spring Boot中从Swagger文档中隐藏端点

我有一个带有Swagger下一个依赖项的Spring Boot" title="Spring Boot">Spring Boot项目:

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger2</artifactId>

<version>2.9.2</version>

<scope>compile</scope>

</dependency>

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger-ui</artifactId>

<version>2.9.2</version>

</dependency>

我有我的界面:

import org.springframework.http.MediaType;

import org.springframework.http.ResponseEntity;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RestController;

import io.swagger.annotations.Api;

import io.swagger.annotations.ApiOperation;

import springfox.documentation.annotations.ApiIgnore;

@RestController

@RequestMapping(value = "/cache")

@ApiIgnore

@Api(hidden = true)

public interface CacheController {

@RequestMapping(

value = "clear/",

method = RequestMethod.GET,

produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.TEXT_PLAIN_VALUE}

)

@ApiOperation(value = "", hidden = true)

ResponseEntity<String> clearToken();

}

注释@ApiIgnore@Api(hidden =

true)(我已经分别测试了它们,它们也不起作用。)对隐藏文档没有影响。仅当注释在方法上时,它才起作用,但是由于我还有其他端点要隐藏,因此我想全部隐藏它们。

有什么想法吗?

编辑:

这是我的Swagger配置:

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.http.HttpStatus;

import org.springframework.web.bind.annotation.RequestMethod;

import springfox.documentation.builders.ApiInfoBuilder;

import springfox.documentation.builders.PathSelectors;

import springfox.documentation.builders.RequestHandlerSelectors;

import springfox.documentation.builders.ResponseMessageBuilder;

import springfox.documentation.service.ApiInfo;

import springfox.documentation.service.ApiKey;

import springfox.documentation.service.AuthorizationScope;

import springfox.documentation.service.Contact;

import springfox.documentation.service.ResponseMessage;

import springfox.documentation.service.SecurityReference;

import springfox.documentation.spi.DocumentationType;

import springfox.documentation.spi.service.contexts.SecurityContext;

import springfox.documentation.spring.web.plugins.Docket;

import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration

@EnableSwagger2

public class SwaggerConfig {

public static String API_KEY_NAME;

@Bean

public Docket apiDocumentation() {

List<ResponseMessage> errorList = this.defineResponseMessages();

return new Docket(DocumentationType.SWAGGER_2)

.select()

.apis(RequestHandlerSelectors.basePackage("my.package.rest"))

.paths(PathSelectors.any())

.build()

.useDefaultResponseMessages(true)

.globalResponseMessage(RequestMethod.GET, errorList)

.securitySchemes(Arrays.asList(this.apiKey()))

.securityContexts(Arrays.asList(this.securityContext()))

.apiInfo(this.apiInfo());

}

@Value("${server.security.apiKeyName}")

public void setApiKeyName(final String apiKeyName) {

SwaggerConfig.API_KEY_NAME = apiKeyName;

}

private ApiKey apiKey() {

return new ApiKey("apiKey", API_KEY_NAME, "header");

}

private SecurityContext securityContext() {

return SecurityContext.builder()

.securityReferences(defaultAuth())

.forPaths(PathSelectors.any()).build();

}

private List<SecurityReference> defaultAuth() {

AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");

AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];

authorizationScopes[0] = authorizationScope;

return Arrays.asList(new SecurityReference("apiKey", authorizationScopes));

}

private List<ResponseMessage> defineResponseMessages() {

List<ResponseMessage> errorList = new ArrayList<ResponseMessage>();

ResponseMessage responseMessage = new ResponseMessageBuilder()

.code(HttpStatus.INTERNAL_SERVER_ERROR.value())

.message(HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase())

.build();

errorList.add(responseMessage);

responseMessage = new ResponseMessageBuilder()

.code(HttpStatus.UNAUTHORIZED.value())

.message(HttpStatus.UNAUTHORIZED.getReasonPhrase())

.build();

errorList.add(responseMessage);

responseMessage = new ResponseMessageBuilder()

.code(HttpStatus.NOT_FOUND.value())

.message(HttpStatus.NOT_FOUND.getReasonPhrase())

.build();

errorList.add(responseMessage);

return errorList;

}

private ApiInfo apiInfo() {

ApiInfoBuilder apiInfoBuilder = new ApiInfoBuilder();

return apiInfoBuilder

.title("My API")

.description("Description")

.version("1.0.0 Beta")

.build();

}

}

回答:

您已@ApiIgnore在界面上添加了注释。看起来,当在接口上添加此注释时,该注释不起作用。(我真的不明白为什么要@Api在接口上工作,而@ApiIgnore不能。????)

将注释直接添加到您的控制器类。这应该可以解决您的问题。

注释上的hidden属性@Api当前不起作用。(请参阅此

GitHub问题。)

以上是 如何在Spring Boot中从Swagger文档中隐藏端点 的全部内容, 来源链接: utcz.com/qa/411532.html

回到顶部