我正在使用Cakephp3 CRUD插件提供Resful API。我的前端使用的是Angular.js。我正在实现一个用户故事,该故事有助于通过表单上载图像。
由于我要处理图像,因此需要将FormData对象传递给后端。对于我的Add方法(这是POST请求),这可以正常工作。但是,在编辑方面,我应该使用PUT方法。编辑不起作用,我相信这是因为PUT与表单数据不兼容。
我已经看到有关Laravel的类似问题,对于这种框架,存在一种变通方法,其中可以通过POST请求发送隐藏字段“ _method”。
CakePHP的Crud插件是否有类似的解决方案?
更新
“不起作用”是指我保存到API“ edit”方法的任何新更改都不会保存。此外,如果我在edit方法的beforeSave中调试实体,我会看到当前保存的实体-没有区别,我尝试从输入中保存。
对于在调试相同对象时“起作用”的“ add”方法,我看到了希望看到并希望保存的新实体数据。
答案 0 :(得分:0)
因此,回答我自己的问题时,解决方案与我在问题中提到的问题所使用的解决方案相似。
主要是因为我需要使用PUT方法,而这与FormData不兼容,所以我需要用POST覆盖该方法。因此,我的请求的标头是:
headers: {
"Content-Type": undefined,
"X-HTTP-Method-Override": "PUT"
}
将内容类型设置为未定义也是关键。我希望必须将类型显式设置为多部分,但是这样做不会设置请求的“边界”,并且API无法解析该请求。通过设置undefined,Angular前端可以检测到多部分类型并为我设置边界。
感谢@ndm的耐心等待,并帮助我发现解决方案。