gpt4 book ai didi

spring rest api 版本控制

转载 作者:行者123 更新时间:2023-12-04 16:24:51 25 4
gpt4 key购买 nike

在我的 spring Controller 中,我有 2 个 rest api 方法。示例:getUser、getRole
一个客户端通过“/api/v1”之类的方式访问它。
现在我想更新其中一种方法。即,getRole。所以新的方法/版本将是“/api/v2”。
但是 v1 的方法没有变化。即,“/api/v1”。

如何在同一个项目中处理两个版本的其余方法?
我的意思是,getUser rest API 应该同时支持“/api/v1”和“/api/v2”。
并且 getRole rest API 应该支持两个版本但不同的功能(例如:数据库更改,逻辑更改)。
简单来说,
1. getUser 将有 1 个支持两个版本的方法。
2. getRole 每个版本有 2 个方法。

请在这里帮助我。

最佳答案

如果你想为两个版本使用单独的方法,你可以通过在 @RequestMapping 中定义不同的值

方法一

    @RequestMapping(
value = "baseurl/v1/role",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)

and


@RequestMapping(
value = "baseurl/v2/role",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)

但如果你想用同样的方法处理它,你可以使用

方法二:使用@PathVariable
@RequestMapping(
value = "baseurl/{version}/role",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public returnType methodName(@PathVariable("version") String version){

// code to check version

}

方法三:使用@RequestHeader
@RequestMapping(
value = "baseurl/role",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public returnType methodName(@RequestHeader("version") String version){

// code to check version

}

但是正如您所说,您有不同版本的 api,更喜欢使用 @RequestMapping 在单独的 Controller 中管理它们。在类(class)

方法四:
@RestController
@RequestMapping("/v1")
public class anyController {

}

and

@RestController
@RequestMapping("/v2")
public class anyController {

}

关于spring rest api 版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45438362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com