php mvc框架agavi是否使用CRUD兼容REST?
agavi框架使用PUT请求创建和POST来更新信息.通常在REST中,这是另一种方式(通常是指在PUT替换整个数据记录时POST添加信息).
如果我理解正确,重要的问题是PUT必须是幂等的,而POST没有这个要求.因此,我觉得如何创建新记录可以是幂等的(即多个请求不会导致记录的多次创建),特别是当ORM通常使用id作为主键并且新记录的id不知道时到客户端(因为它在数据库中自动处理),因此不能成为请求的一部分.鉴于PUT请求,agavi如何保持幂等性的要求. 谢谢. 解决方法
PUT既可用于创建,也可用于更新完整记录. POST通常用于部分更新和相关操作,以及在服务器上创建新类型的记录而不指定资源的URL(例如POST到/ articles / 23 / comments返回201状态和位置:/ articles / 23 / comments / 283136标题).因此,在您的情况下(使用序列/自动增量ID),您将使用该方法.
但是,HTML(以及Web表单)是不同的.它只知道GET和POST,而不是DELETE和PUT.对于删除和更新操作,它会重载POST方法. 这就是为什么Agavi默认情况下将POST映射到“写入”并将GET映射到“读取” – 这是最常见的用例,选择“读取”和“写入”是因为它们相对中性并且在某种程度上代表了安全性GET与POST的各个方面(安全性如“GET可以被称为无副作用”和blah). 您可以在factories.xml中更改AgaviWebRequest实现的动词映射;如果您需要帮助(或在此处询问),请参阅Agavi用户邮件列表或IRC频道. IRC频道上的很多人对URL方案设计也很有经验,以防你需要更多的帮助来使你的API漂亮. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |