Laravel Json Response не работает должным образом - PullRequest
0 голосов
/ 06 ноября 2018

Невозможно получить ответ, когда объект ответа пуст. Прекрасно работает, когда объект получил данные.

public function show($id)
{
    $associates = Associate::find_by_id($id);
    if(count($associates)<1)
    {
        $output = array('message' => 'No Records Found');
        $status = 204;

    }
    else{
        $output = array('message' => 'success','data'=>$associates);
        $status = 200;
    }
    return response()->json($output,$status);
}

Нет ответа, когда объект $ associate пуст. Ответ, когда $ associate не пуст:

{
"message": "success",
"data": [
    {
        "first_name": "xxx",
        "last_name": "xxx",
        "mobile": xxxxxxxxxx,
        "email": "xxxxxx@xxxxx",
        "city": "xxxxx",
        "state": "xxxxxx",
        "pincode": "xxxxx"
    }
  ]
}

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

Будет проще, если вы используете привязку модели маршрута, чтобы найти идентификатор записи. Для получения дополнительной информации проверьте https://laravel.com/docs/5.7/routing#route-model-binding.

Я думаю, что приведенный ниже фрагмент должен работать.

if ($associates) {
    $output = array('message' => 'success','data'=>$associates);
    $status = 200;
} else {
    $output = array('message' => 'No Records Found');
    $status = 204;
}
0 голосов
/ 07 ноября 2018

Я переписал функцию для вашей справки.

КСТАТИ. Если функция возвращает только одну запись, в общем случае используйте имя единственного числа для имени переменной.

public function show($id)
{
    // Use find() instead of find_by_id()
    $associate = Associate::find($id);

    // $associate will be null if not matching any record.
    if (is_null($associate)) {

        // If $associate is null, return error message right away.
        return response()->json([
            'message' => 'No Records Found',
        ], 204);
    }

    // Or return matches data at the end.
    return response()->json([
        'message' => 'success',
        'data' => $associate,
    ], 204);
}
0 голосов
/ 06 ноября 2018

У меня была такая же проблема для кода состояния 204. Я считаю, что это вызвано здесь. Затем класс Illuminate \ Foundation \ Application перехватывает это и создает исключение HttpException.

Я считаю, что самым простым решением было бы заставить контроллер вернуть следующее:

return Response::make("", 204);

Возврат пустого сообщения. проверьте код_состояния в вашем коде для отображения сообщения в веб-интерфейсе.

...