理解和利用 @PostMapping 在 Spring REST API 中进行资源更新

问题描述 投票:0回答:2

我经历了经验丰富的开发者 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 
java spring-boot rest post
2个回答
0
投票

根据我的 REST API 知识,REST 给出了

这不太正确。

REST 说:我们应该有一个统一的界面。也就是说,所有资源都应该以相同的方式理解消息。

HTTP 说:这就是 HTTP 应该理解消息的方式。其中包括与每个注册的 HTTP 方法(GET、POST、PUT 等)相关的语义。

POST 是语义约束最少的方法标记 - 只要更具体方法的语义不适合,我们就可以正确使用它(参见 Fielding 2009)。

请注意,通过网络传输文档域的 HTTP 方法 - 这些方法描述了资源(又名“文档”)的操作,并且不一定与有用的工作一致作为操作文档的副作用而发生。


@PostMapping("/createOrUpdate")
@PostMapping("/delete")

每种消息都有一个资源标识符就“很好”;它本质上类似于网站上的每个表单都有不同的资源。

不一定是理想的资源模型;为每种消息使用不同的资源会使“缓存失效”变得更加困难。但它会起作用,并且在您实际上并不关心缓存的情况下它可能“足够好”。


0
投票

我认为这可能会破坏编码标准。

© www.soinside.com 2019 - 2024. All rights reserved.