serii81
@serii81
Я люблю phр...

Как в ларавель 7 вернуть json вместо not found page?

Добрый день.

Ларавель использую только для работы с api.
Удалил все посты, и в postman, когда пытаюсь достучаться до определенного поста, получаю страницу not found из ларавель.

А как вернуть json?

Я нашел такой код для файла Exceptions/Handler.php

public function render($request, Throwable $exception)
  {
    if ($exception instanceof ModelNotFoundException && $request->wantsJson()) {
      return response()->json(['message' => 'Not Found!'], 404);
    }

    return parent::render($request, $exception);
  }


Только он не помог.
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
Запрос должен указывать что он хочет получить в ответ. У вас стоит - все что угодно. Если вы в Postman укажете что хотите получать в ответ JSON - Accept: application/json, вам будет отдавать json. Собственно если глянуть метод wantsJson это будет заметно.
Метод

public function wantsJson()
    {
        $acceptable = $this->getAcceptableContentTypes();

        return isset($acceptable[0]) && Str::contains(strtolower($acceptable[0]), ['/json', '+json']);
    }

З.Ы. но можно гвоздями в middleware прибить на api роуты $request->headers->set('Accept', 'application/json'); тогда вам будет похрен что там клиент хочет. Клиент всегда не прав!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы