【问题标题】:API REST returning new resource when updating existing oneAPI REST 在更新现有资源时返回新资源
【发布时间】:2018-11-15 10:40:53
【问题描述】:

我的应用程序中有一个 ProjectStep 资源,我必须创建一个 API 端点,用于更新我的 ProjectStep 以将其标记为已完成并创建下一个 ProjectStep。在我的 REST API 中,我可以这样做:

PATCH /project-mark/1
POST  /project-mark

但我只想使用一个请求来更新当前步骤,创建一个新的并返回新创建的 ProjectStep。

你会用什么方法?更新现有资源并返回不同资源的 PATCH 请求听起来不是一个好主意。

谢谢

【问题讨论】:

  • 这更像是语法而不是实际编码。除非您遵循非常严格的准则,否则我们非常欢迎您使用其中任何一种。说得更直白一点,使用@jreikes 在this 问题上留下了一个有趣的评论:这个答案中使用的术语只有不需要问基本问题的人才能理解。
  • 非常感谢您的回答 ;)
  • 你能评价我的回答吗?
  • @AlesandroGiordano 我做了,但我还没有足够的代表,所以我的投票没有显示。祝你有美好的一天

标签: php rest api symfony


【解决方案1】:

使用 PUT 请求,请查看此链接

https://stackoverflow.com/questions/630453/put-vs-post-in-rest

主要使用 PUT API 来更新现有资源(如果资源不存在,那么 API 可能会决定是否创建新资源)。如果 PUT API 创建了新资源,源服务器必须通过 HTTP 响应代码 201(已创建)响应通知用户代理,如果现有资源被修改,则 200(OK)或 204(无内容)应发送响应代码以指示请求成功完成。

如果请求通过缓存并且 Request-URI 标识了一个或多个当前缓存的实体,则这些条目应该被视为陈旧的。对此方法的响应不可缓存。

【讨论】:

  • 正如 SO 指南所提倡的,当您发现一个已经在 SO 上回答的新问题时,您应该将该问题标记为重复,而不是重复使用相同的答案来获得声誉积分由其他用户制作;-)
  • 我不知道该怎么做
  • 在问题的标签下有一个“标志”文本链接(在“编辑”和“分享”附近)。它将打开一个弹出窗口,您可以从中选择正确的标记原因。
  • 但这是一个关于我必须拨打哪个电话才能做某事的问题,“重复”是关于电话之间的区别......用户必须知道 PUT 请求之前
  • OP 询问哪种方法更适合用于确定的操作,因为他根本不知道所有可用的方法,所以副本中的答案是正确的,因为它为 OP 提供了知识自己理解在这种情况下使用哪种方法(以及所有未来的)。例如,在 SO 上有大量日常问题会导致 php sintax 错误,因此这些问题中 99% 的正确答案是解释(在 SO 上已经存在多年)开始了解它们的来源以及如何调试它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-03
  • 1970-01-01
  • 2023-03-21
  • 2017-12-26
  • 2019-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多