1

下面是我的控制器操作方法。你可以看到我在将数据保存到数据库之前传递了一个请求类的参数来验证

public function store(RoleRequest $request)
{
}

我的请求课程如下。

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,
        ];
    }    
}

当我通过网页(刀片)运行上面的代码时,它可以完美运行。

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

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

    }
}

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

错误详情

在此处输入图像描述

4

1 回答 1

6

ValidationRequest类检查您的请求是 ajax 请求还是普通请求。

如果这是一个正常的请求,它会:redirect()->back()在会话中使用验证消息。

如果它是一个 ajax 请求,它会显示一个包含验证消息的 json 对象。

前端框架/库(例如 jQuery)向 ajax 请求添加标头,让后端知道这是一个 ajax 请求。Laravel 检查这个头来决定做什么(使用isAjaxorwantsJson方法)。

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

Accept: application/json

X-Requested-With: XMLHttpRequest

下面以邮递员的截图为例:

在此处输入图像描述

于 2016-08-30T23:00:57.743 回答