必须是有效的JSON字符串Laravel和Postman

时间:2019-04-07 19:24:07

标签: php laravel postman

我正在尝试将一个简单的JSON对象数组传递给Laravel,而我的验证器却失败了。我不确定这是否与PostmanLaravel验证程序本身有关。

从邮递员传递数据:

semester:1
academic_year:2
civil_year:2016
course_id:1
periods[0]:{ "id": 2, "starts": '2018-01-01', "end": '2018-06-01' }

passing data via postman

Laravel验证程序:

Validator::validate($request->all(), [
            'semester'      => 'integer|between:1,2',
            'academic_year' => 'required|integer|between:1,4',
            'civil_year'    => 'required|integer|between:' . date('Y', strtotime('-5 years')) . ',' . date('Y', strtotime('+5 years')),
            'course_id'     => 'required|integer|exists:courses,id',
            'periods'       => 'required|array|between:1,4',
            'periods.*'     => 'required|json'
        ]);

验证者返回:

{
    "message": "The given data was invalid.",
    "errors": {
        "periods.0": [
            "The periods.0 must be a valid JSON string."
        ]
    }
}

我尝试过的事情

我尝试将raw的请求作为Postman传递,但没有运气:

passing data as raw

此外,我尝试插入标头

Accept:application/json
Content-Type:application/json

2 个答案:

答案 0 :(得分:1)

我使用邮递员进行了测试,如果我像在这里那样使用单引号,则验证将失败:

{ "id": 2, "starts": '2018-01-01', "end": '2018-06-01'}

尝试使用这样的双引号:

{ "id": 2, "starts": "2018-01-01", "end": "2018-06-01"}

它应该通过。

答案 1 :(得分:0)

我刚刚添加了两个字符串

Accept: application/json
Content-Type: application/json

效果很好。