通过 Chrome Postman 扩展测试请求 class 验证时出现 404 错误

404 Error when Testing Request class validation through Chrome Postman Extension

下面是我的控制器操作方法。你可以看到我在将数据保存到数据库

之前传递了一个请求Class的参数来验证
public function store(RoleRequest $request)
{
}

我的请求class如下。

class RoleRequest extends Request
{
    private $Role;

    public function __construct(IRole $_role) {
        $this->Role = $_role;
    }        
    public function authorize()
    {
        return true;
    }    
    public function rules()
    {
        return [
            'Role' => 'required|max:20|min:4,
        ];
    }    
}

当我通过网页 (blade) 运行 时,上面的代码工作得很好。

我又为 API 创建了一个控制器来发送保存请求。下面是代码

class RoleApiController extends Controller
{
    public function store(RoleRequest $request)
    {

    }
}

问题来了,当我只输入 1 个字符作为角色名称并且请求 class 强制执行验证时我收到 404 错误这次我从 Chrome 中的 Postman Extension 发送请求。

错误详情

验证 Request class 检查您的请求是 ajax 请求还是正常请求。

如果是正常请求,它会执​​行:redirect()->back() 以及 session 中的验证消息。

如果是 ajax 请求,它会显示一个 json object,其中包含验证消息。

前端 frameworks/libraries 例如 jQuery 将 header 添加到 ajax 请求,让后端知道这是一个 ajax 请求。 Laravel 检查这个 header 来决定做什么(使用 isAjaxwantsJson 方法)。

Postman 不会自动发送此 header。因此,您应该手动添加以下 header 之一:

Accept: application/json

X-Requested-With: XMLHttpRequest

这里以postman截图为例: