gpt4 book ai didi

php - php mvc framework agavi 是否使用符合 REST 的 CRUD?

转载 作者:可可西里 更新时间:2023-11-01 00:28:02 26 4
gpt4 key购买 nike

agavi 框架使用 PUT 请求创建信息,使用 POST 更新信息。通常在 REST 中,这是相反的用法(通常指的是 POST 添加信息,而 PUT 替换整个数据记录)。

如果我没理解错的话,重要的是PUT必须是幂等的,而POST没有这个要求。因此,我想知道如何创建新记录是幂等的(即多个请求不会导致多次创建记录),特别是当 ORM 通常使用 id 作为主键并且不知道新记录的 id 时给客户端(因为它是在数据库中自动创建的),因此不能成为请求的一部分。 agavi如何针对PUT请求保持幂等性的要求。

谢谢。

最佳答案

PUT 可用于创建和更新完整记录。 POST 通常用于部分更新和相关操作,以及在不指定资源 URL 的情况下在服务器上创建新类型的记录(例如,POST 到/articles/23/comments 返回 201 状态和位置:/articles/23/comments/283136 标题)。因此,在您的情况下(使用序列/自动增量 ID),您将使用该方法。

但是,HTML(以及网络表单)是不同的。它只知道 GET 和 POST,不知道 DELETE 和 PUT。对于删除和更新操作,它重载了 POST 方法。

这就是为什么 Agavi 在默认情况下将 POST 映射到“写入”并将 GET 映射到“读取”——这是最常见的用例,选择“读取”和“写入”是因为它们相对中立,并且在某种程度上代表 GET 与 POST 的安全方面(安全性如“可以在没有副作用的情况下调用 GET”等等)。

您可以在 factories.xml 中更改 AgaviWebRequest 实现的动词映射;如果您需要帮助(或在这里询问),请参阅 Agavi 用户邮件列表或 IRC channel 。 IRC channel 上的很多人在 URL 方案设计方面也非常有经验,以防您需要更多帮助来使您的 API 更漂亮。

关于php - php mvc framework agavi 是否使用符合 REST 的 CRUD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1314862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com