gpt4 book ai didi

rest - 具有不同 HTTP 请求类型的两个相同的 REST 映射

转载 作者:可可西里 更新时间:2023-11-01 16:56:11 25 4
gpt4 key购买 nike

假设我们在 REST Controller 上有两个方法:

@ResponseStatus(HttpStatus.OK)
@RequestMapping(value = "/{userId}", method = RequestMethod.GET)
@ResponseBody
public UserDTO showUserDetails(@PathVariable("userId") Long userId) {
/* code here */
}

@ResponseStatus(HttpStatus.ACCEPTED)
@RequestMapping(value = "/{userId}", method = RequestMethod.POST)
@ResponseBody
public UserDTO editUser(@PathVariable("userId") Long userId, UserDTO userToEdit) {
/* code here */
}

所以我们有两个相同的 URI 映射,但支持不同的 HTTP 请求。 我的问题是:这种方法在设计 API 方面是否可以接受? 或者最好将第二种方法映射到类似 /{userId}/edit

另外,当使用 hateoas 范式时,响应看起来会有些奇怪:

"links":[{"rel":"self","href":"http://1localhost:8080/root/users/1"},{"rel":"edit","href":"http://localhost7:8080/root/users/1"}]

2 个不同的 URI 看起来相同。

最佳答案

就 REST API 设计而言,您的映射是正确的。对于给定的资源,您应该通过单个 URI 与其交互,在您的示例中:

http://localhost:8080/root/users/1

并通过 HTTP 动词指定操作。

检查 REST - Applied to web services 中的 RESTful API HTTP 方法 ,举个例子。

关于rest - 具有不同 HTTP 请求类型的两个相同的 REST 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25885189/

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