我经历了经验丰富的开发者 Spring Boot 代码, 他使用
@PostMapping
来创建、更新、删除资源。
通过一些 ID 检查逻辑,他决定是否应该创建或更新资源!
最佳实践和注意事项
@PostMapping
相比,决定是否使用 @PutMapping
进行更新时需要考虑哪些关键因素?@PostMapping
特别适合更新的特定场景?据了解 REST 推荐:
@GetMapping - getting resources
@PostMapping - Creating resources
@PutMapping - Update resources, if not available create it
@DeleteMapping - Deleting resources
@PatchMapping - Partial update
发出 post 请求是否会使 API 更安全用于创建、更新和删除。 或者使用
@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
根据我的 REST API 知识,REST 给出了
这不太正确。
REST 说:我们应该有一个统一的界面。也就是说,所有资源都应该以相同的方式理解消息。
HTTP 说:这就是 HTTP 应该理解消息的方式。其中包括与每个注册的 HTTP 方法(GET、POST、PUT 等)相关的语义。
POST 是语义约束最少的方法标记 - 只要更具体方法的语义不适合,我们就可以正确使用它(参见 Fielding 2009)。
请注意,通过网络传输文档域的 HTTP 方法 - 这些方法描述了资源(又名“文档”)的操作,并且不一定与有用的工作一致作为操作文档的副作用而发生。
@PostMapping("/createOrUpdate")
@PostMapping("/delete")
每种消息都有一个资源标识符就“很好”;它本质上类似于网站上的每个表单都有不同的资源。
不一定是理想的资源模型;为每种消息使用不同的资源会使“缓存失效”变得更加困难。但它会起作用,并且在您实际上并不关心缓存的情况下它可能“足够好”。
我认为这可能会破坏编码标准。