如何使用 Springfox 从 Swagger 文档中隐藏端点

我有一个 Spring Boot 项目,它具有 Springfox 的下一个依赖项:


<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)(我已经单独测试过它们,它们也不起作用。)对隐藏文档没有影响。它仅在注释超过方法时才有效,但我想将它们全部隐藏,因为我还有其他要隐藏的端点。


一些想法?


jeck猫
浏览 167回答 5
5回答

ABOUTYOU

您已@ApiIgnore在接口上添加注释。看起来,当添加到界面上时,此注释不起作用。(我真的不明白为什么@Api在界面上工作而@ApiIgnore不是。😕)将注释直接添加到您的控制器类。这应该可以解决您的问题。注释上的hidden属性@Api当前不起作用。(请参阅此GitHub 问题。)

慕尼黑5688855

对于OpenAPI3和SpringBoot:我在控制器的方法上使用了 @Hidden 注释。它似乎在方法级别和控制器级别都有效。@Hidden 注释是通过以下方式导入的:import&nbsp;io.swagger.v3.oas.annotations;

30秒到达战场

另一种方法是使用@ApiOperation(hidden = true) 这可以在控制器/处理程序级别的方法中使用。例如@RestControllerpublic HomeController{@ApiOperation(value = "<Your Message>", hidden = true)&nbsp; &nbsp; public String getMessage(@RequestParam(value = "msg") final String msg){&nbsp; &nbsp; &nbsp; &nbsp; return msg;&nbsp; &nbsp; }}

青春有我

我们只想从类中隐藏特定方法的场景。对于 swagger.v3 有一个名为Hiddenin的注释io.swagger.core.v3:swagger-annotations:2.0.10 jar。要隐藏的方法可以使用注释进行Hidden注释,如下所示。下面的方法显示了DELETE需要从 swagger 文档中隐藏的操作方法。@DELETE@Hiddenpublic void deleteList(int id) {//code goes here.}

慕码人2483693

另一种不同的好方法是在 SpringFox 配置上定义可见路径@Configuration@EnableSwagger2public class SpringFoxConfig {&nbsp; &nbsp; @Bean&nbsp; &nbsp; public Docket api() {&nbsp; &nbsp; &nbsp; &nbsp; return new Docket(DocumentationType.SWAGGER_2)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .select()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .apis(RequestHandlerSelectors.any())&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .paths(Predicates.or(PathSelectors.ant("/rtm/**"), PathSelectors.ant("/appview/**")))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .build().apiInfo(apiEndPointsInfo());&nbsp; &nbsp; }}通过这种方式,您可以集中定义可见路径,并避免在许多控制器上放置大张旗鼓的注释。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java