【发布时间】:2020-01-27 15:33:50
【问题描述】:
我正在使用 Cakephp3 CRUD 插件来提供 Resful API。我的前端使用的是 Angular.js。我正在实现一个用户故事,它有助于通过表单上传图片。
由于我正在处理图像,我需要将一个 FormData 对象传递给后端。这适用于我的 Add 方法,它是一个 POST 请求。但是,当涉及到编辑时,我应该使用 PUT 方法。编辑不起作用,我相信这是因为 PUT 与表单数据不兼容。
我已经看到有关 Laravel 的类似问题,对于该框架,有一个解决方法,其中隐藏字段“_method”可以通过 POST 请求发送。
CakePHP 的 Crud 插件有类似的解决方案吗?
更新
“不起作用”是指我发布到 API“编辑”方法的任何新更改都不会保存。此外,如果我在编辑方法的 beforeSave 中调试实体,我会看到当前保存的实体 - 没有区别,我试图从输入中保存。
对于“确实有效”的“添加”方法,如果我调试同一个对象,我会看到我希望看到并希望保存的新实体数据。
【问题讨论】:
-
尝试使用PATCH 请求。由于您似乎只是对对象进行了部分更新,因此 PATCH 应该是更合适的请求。
-
@TechGnome PATCH 是否与表单数据兼容?
-
PATCH 和 PUT 都可以提交请求正文。这个隐藏字段只是对 HTML 表单仅允许使用 GET 或 POST 的限制的“解决方法”,因此您的 REST API 不必担心。如果您显示调试结果并详细说明“不起作用”部分可能会有所帮助,这可能意味着任何事情。
-
@ndm 请查看我的问题的更新
标签: javascript cakephp-3.0 crud restful-authentication