需要关于休息 PUT 方法的解释

need explanation about rest PUT method

这是一些控制器:

@RequestMapping(value="/rest/put/{login}", method = RequestMethod.PUT)
    public @ResponseBody User putUser(@RequestBody User user, @PathVariable String login){
        return user;
    }

当我发送此请求时

{"login":"ale"}

到这个URL

http://localhost:8080/Application/rest/put/termination

我收到这样的正常回复:

{"login":"ale","password":"password","email":"email"}

我的问题: 为什么在控制器中必须是@PathVariable 登录(至少在所有教程中都是)而不是静态的 URL,这是什么原因是吗?

首先,你的问题不太准确。在控制器方法中包含 @PathVariable 不是 必须 。您可以随时使用静态 URL。

其次,为 REST 添加 @PathVariable 并不是 必须 ,而是 标准 。该标准试图将常见的 CRUD 操作与常见的 HTTP 动词(POST、GET、PUT、DELETE)和 URL 通常包括资源名称和资源 ID。通常,@PathVariable 表示 REST 标准中的资源 ID URL。

URL 的一个示例是 /user/{user_id},其中 user 是资源名称,user_id 是资源 ID。

最后,通过查看您发布的代码。 @PathVariable String login 并不真正符合 REST 标准。正如你的例子 URL,

http://localhost:8080/Application/rest/put/termination

login = termination,显然与REST无关