我有一个名为API\Fields
的控制器(store
),该方法的路由设置如下:
POST /api/templates/{template}/fields -> API\Fields@store
一切正常,直到我使用以下规则创建了一个非常简单的表单请求验证类(除了authorize
方法的返回值之外,这是我唯一更改的内容):< / p>
return [
'name' => ['required', 'alpha_num'],
'coordinates' => ['required', 'json'],
'type' => ['required', BaseField::RULE],
'page' => ['required', 'numeric'],
'readonly' => ['sometimes', 'boolean'],
'required' => ['sometimes', 'boolean']
];
创建类之后,我将请求类从Request
更改为CreateFieldsRequest
,这使该路由的整个路由几乎混乱了。 Laravel似乎没有呼叫store
,而是呼叫了index
。当我将CreateFieldsRequest
恢复到Request
类时,它的行为又恢复了。
我无法找到有关此主题的任何信息,而且我已经一遍又一遍地验证了我在任何相关类上都没有某种不正确的路由或重定向。
对此将提供任何帮助或指导,谢谢!
答案 0 :(得分:0)
运行一个非常简单的测试后,我意识到这似乎是 Postman 的问题。如果遇到此问题,请坚持在POST正文上添加一个_method=POST
参数,或者干脆使用XHR或其他API测试工具。
编辑:进一步测试后,我意识到该问题尚未解决。当我通过Chrome开发者控制台将请求作为POST请求运行时,Laravel将其作为“ GET”请求踢回,不确定原因。
答案 1 :(得分:0)
当我通过Chrome开发者控制台将请求作为POST请求运行时,Laravel将其作为“ GET”请求将其踢回,不知道为什么。
未通过验证issues a redirect的FormRequest
。这是默认行为。
如果您发出AJAX请求或请求带有Accept
标头的JSON响应,它将为respond with a JSON list of validation errors and a 422 HTTP code instead。