用于Spring Boot REST API版本控制的自定义标头方法

Pra_A:

我希望使用自定义标头通过Spring Boot和Swagger实现REST API的版本控制我经历了如下所示的许多链接。

https://dzone.com/articles/versioning-rest-api-with-spring-boot-and-swagger

Spring + Springfox + Header参数

使用Springfox在Swagger UI文档中添加标头参数

一件事情看起来很清楚,我的每个REST终结点都必须使用Custom Header 进行注释headers = {"X-API-VERSION=v1"}

以下是我的样本“休息端点”。

@ApiOperation(value = "Find Employees", nickname = "Find Employees")
@ApiResponses(value = { @ApiResponse(code = 200, message = "For Success as well as No Data found scenerio."),
        @ApiResponse(code = 500, message = "Internal Server Error") })
@GetMapping(value = "/employees", headers = {"X-API-VERSION=v1"})
public ResponseEntity<List<Employee>> findEmployees() {
    List<Employee> EmployeeList= employeeservice.findAllEmployees();
    return new ResponseEntity<List<Employee>>(EmployeeList,HttpStatus.OK);
}

Swagger配置更改/更新

@Configuration
@EnableSwagger2
public class SwaggerConfig{
    @Bean
    public Docket api() {
        ParameterBuilder aParameterBuilder = new ParameterBuilder();
        aParameterBuilder.name("X-API-VERSION=v1").modelRef(new ModelRef("string")).parameterType("header").required(true).build();
        List<Parameter> operationParameters = new ArrayList<>();
        operationParameters.add(aParameterBuilder.build());

        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.boot")))
                .apis(RequestHandlerSelectors.basePackage("com.example"))
                .paths(PathSelectors.any())
                .build()
                .apiInfo(apiInfo())
                .useDefaultResponseMessages(false)
                .globalOperationParameters(operationParameters)
                .globalResponseMessage(
                        RequestMethod.GET,
                        newArrayList(new ResponseMessageBuilder().code(500).message("").build()));
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("API Management")
                .description("Sample Description")
                .termsOfServiceUrl("https://www.test.com")
                .version("0.1")
                .build();
    }
}

按照此链接:https : //www.springboottutorial.com/spring-boot-versioning-for-rest-services,我必须传递value X-API-VERSION=v1,但是当我传递该/employees/v1/error端点时,将调用端点,并且什么也没剩下,并且没有控制器在获取叫。如何解决这个问题?

Mojtabye:

这就是这种方法的工作原理。

@RestController
public class TestController {


    @RequestMapping(value = "/user")
    public String getUserDefault() {
        return "getUserDefault";
    }

    @RequestMapping(value = "/user", headers = {"X-API-VERSION=v1"})
    public String getUserV1() {
        return "getUserV1";
    }

    @RequestMapping(value = "/user", headers = {"X-API-VERSION=v2"})
    public String getUserV2() {
        return "getUserV2";
    }

}

另外,您可以使用GetMapping代替RequestMapping,让我们使用curl以下命令进行测试

curl --location --request GET 'http://localhost:8080/user' --header 'X-API-VERSION: v2'

return 200 getUserV2

curl --location --request GET 'http://localhost:8080/user' --header 'X-API-VERSION: v1'

return 200 getUserV1

curl --location --request GET 'http://localhost:8080/user'

return 200 getUserDefault

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用于Spring Boot Rest Controller的Junit

Spring Boot Rest控制器未将请求主体转换为自定义对象

Spring Boot-自定义Rest控制器异常处理HTTP状态

Rest Service中的Spring Boot自定义异常

自定义主体错误消息-Spring Boot REST

Spring Boot REST API / Spring Security:身份验证失败时返回自定义消息

如何使用Spring Boot使用OAuth1.0和自定义标头对API进行身份验证

Spring Boot(JAR)具有多个调度程序servlet,用于带有Spring Data REST的不同REST API

在错误Spring Boot Rest API期间自定义HTTP响应消息

在Spring Boot Rest API中使用多个联接公开自定义查询

Spring是将自定义Http状态,标头和正文返回给Rest Client的最简单方法

用于CRUD操作的REST API的演示Spring Boot应用程序抛出404 not found错误

带有多线程的REST Api用于在Spring Boot中处理文件

Spring Boot:从@Scheduled方法访问rest api

Spring Kafka的Spring Boot Rest API

从 Spring Rest 到 AngularJS 客户端的自定义标头

如何使用<String,Integer>将自定义标头添加到Spring Boot HttpHeaders?

在 Spring Boot JAVA 中将自定义标头注入 ServletRequest

Spring Boot REST控制器验证

用于InsufficientAuthenticationException的Spring Boot自定义错误对象

Spring Boot搜索API REST设计

使用LDAP认证的Spring Boot REST API

Spring Boot REST API-请求超时?

RestController的设计难题-Spring Boot REST API

在Spring Boot REST API中上传文件

Spring Boot REST API中的对象数组

使用Rest API 404的Spring Boot

Spring Boot + REST Api +社交登录

Spring Boot Rest API安全性