我经历了开发者spring Boot 的代码,他使用@PostMapping
进行create,update,delete资源。
通过一些id检查逻辑,他决定是否应该创建或更新资源!根据我的REST API知识,REST提供了
@GetMapping - getting resources
@PostMapping - Creating resources
@PutMapping - Update resources, if not available create it
@DeleteMapping - Deleting resources
@PatchMapping - Partial update
字符串
正在使用post make API more secure
来创建、更新或删除。或者使用@Postmapping
作为安全API是一个很好的做法。
如果我说错了请纠正我。
@PostMapping("/createOrUpdate")
public ResponseEntity<UserDto> createResource(@RequestBody YourResourceType resource) {
// use JPA findById to check it exist or not, and perform create or update logic
}
@PostMapping("/delete")
public ResponseEntity<String> createResource(@RequestBody YourResourceType resource) {
// use JPA findById to check it exist or not, and perform delete resource logic or
2条答案
按热度按时间oaxa6hgo1#
根据我对REST API的了解,REST提供了
这不太对
REST说:我们应该有一个统一的接口。也就是说,所有的资源都应该以同样的方式理解消息。
HTTP说:这是HTTP应该理解消息的方式。2包括与每个注册的HTTP methods(GET、POST、PUT等)相关的语义。
POST是具有最少语义约束的方法标记-我们在任何时候使用它都是正确的,因为更具体的方法的语义不合适(参见Fielding 2009)。
请注意,transfer-of-documents-over-a-network域的HTTP方法-这些方法描述了对 resources(又名“documents”)的操作,并且不一定与作为操作文档的副作用而发生的有用工作相一致。
字符串
每种消息都有一个资源标识符是“好的”;这本质上类似于网站上的每种表单都有不同的资源。
它不一定是一个理想的资源模型;为每种消息使用不同的资源会使缓存失效更加困难。但它会工作,并且在您实际上不关心缓存的环境中它可以“足够好”。
v7pvogib2#
是的,你可以使用@PostMapping来创建/更新和删除,但这不是一个很好的方法。
我认为这可以打破编码标准。