需要关于休息 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无关
这是一些控制器:
@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无关