Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php API REST在更新现有资源时返回新资源_Php_Rest_Api_Symfony - Fatal编程技术网

Php API REST在更新现有资源时返回新资源

Php API REST在更新现有资源时返回新资源,php,rest,api,symfony,Php,Rest,Api,Symfony,我的应用程序中有一个ProjectStep资源,我必须创建一个API端点,用于更新我的ProjectStep以将其标记为完成并创建下一个ProjectStep。在我的REST API中,我可以这样做: PATCH /project-mark/1 POST /project-mark 但是我只想使用一个请求来更新当前步骤,创建一个新步骤并返回新创建的ProjectStep 你会用什么方法?更新现有资源并返回不同资源的补丁请求听起来不是个好主意 感谢使用PUT请求,请查看此链接 https://

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

PATCH /project-mark/1
POST  /project-mark
但是我只想使用一个请求来更新当前步骤,创建一个新步骤并返回新创建的ProjectStep

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


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

https://stackoverflow.com/questions/630453/put-vs-post-in-rest
主要使用PUT API来更新现有资源(如果资源不存在,则API可能决定是否创建新资源)。如果PUT API创建了新资源,则源服务器必须通过HTTP响应代码201(已创建)响应通知用户代理,如果修改了现有资源,则应发送200(确定)或204(无内容)响应代码以指示请求成功完成


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

这是语法而不是实际编码。除非你遵循一个非常严格的指导原则,否则我们欢迎你使用这两种方法。更直截了当地说,use@jreikes在这个问题上留下了一条有趣的评论:这个答案中使用的术语只有那些不需要问基本问题的人才能理解。非常感谢你的回答;)你能给我的答案打分吗?@AlesandroGiordano我给了,但我还没有足够的代表,所以我的选票没有显示出来。如SO指导方针所提倡的,当您发现一个新问题已经在SO上得到了回答时,您应该将该问题标记为重复问题,而不是重复使用相同的答案,以通过其他用户的努力获得声誉分数;-)我不知道该怎么做在问题标签下有一个“标志”文本链接(靠近“编辑”和“共享”)。它将打开一个弹出窗口,您可以从中选择正确的标记原因。但这是一个关于我必须打哪个电话才能做某事的问题,“重复”是关于电话之间的区别。。。在OP询问哪种方法更适合用于确定的操作之前,用户必须知道PUT请求,因为他根本不知道所有可用的方法,所以副本中的答案是正确的,因为它让OP了解了自己在这种情况下(以及所有未来的情况下)使用哪种方法。例如,在上一篇文章中,每天都有大量的问题会导致php sintax错误,因此对这些问题中99%的正确答案是一个解释(多年以来就已经存在),以便开始了解这些问题的来源以及如何调试它们。