Postman向Lumen 8发起PUT请求填全字段仍报required校验错误
问题原因
PHP原生不支持解析PUT、PATCH等非POST请求方法下的multipart/form-data类型请求体,所以你使用PUT方法携带form-data格式参数(包含上传文件)发起请求时,Lumen侧无法正常读取请求参数,就会触发validation.required校验错误,日志中请求数据为空也和该特性直接相关。
解决方案
优先使用请求方法欺骗方案,无需修改框架底层逻辑即可解决问题:
- 将Postman中的请求方法改为
POST - 在form-data参数中新增一个键为
_method、值为PUT的字段 - 原有路由定义无需修改,Lumen会自动识别
_method参数匹配对应的PUT路由,同时可以正常读取所有form-data字段和上传的图片文件
如果必须使用原生PUT请求,你需要自行扩展Lumen的请求解析逻辑,手动解析multipart/form-data格式的PUT请求体,将参数和文件挂载到请求实例上,该方案改造成本较高,不做优先推荐。
校验项
你可以额外排查以下配置避免其他问题:
- 确认路由文件中update方法对应的路由是已注册的PUT类型路由,参数占位符和你传的资源id匹配
- 确认Postman中form-data的字段名和
PageRequest中定义的校验规则字段名完全一致,无拼写错误
内容的提问来源于stack exchange,提问作者mstdmstd
相关产品推荐
相关产品推荐

