Метод expectsJson
Метод expectsJson применяется к объекту запроса и возвращает логическое значение.
Он проверяет заголовок Accept запроса, чтобы определить, ожидает ли клиент
получить ответ в формате JSON. Метод возвращает true, если в заголовке
присутствует application/json или если запрос был отправлен через
JavaScript-фреймворки с указанием ожидания JSON-ответа.
Синтаксис
<?php
$request->expectsJson();
?>
Пример
Давайте проверим, ожидает ли текущий запрос JSON-ответ:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesLog;
class ApiController extends Controller
{
public function handle(Request $request)
{
if ($request->expectsJson()) {
return response()->json(['status' => 'success']);
}
return view('welcome');
}
}
?>
Результат выполнения кода при запросе с заголовком Accept: application/json:
{"status": "success"}
Пример
Давайте используем метод expectsJson для определения типа ответа в контроллере:
<?php
namespace AppHttpControllers;
use AppModelsUser;
use IlluminateHttpRequest;
class UserController extends Controller
{
public function index(Request $request)
{
$users = User::all();
if ($request->expectsJson()) {
return response()->json($users);
}
return view('users.index', ['users' => $users]);
}
}
?>
Результат выполнения кода при обычном запросе:
"HTML-страница со списком пользователей"
Пример
Давайте проверим метод expectsJson в middleware для обработки только JSON-запросов:
<?php
namespace AppHttpMiddleware;
use Closure;
use IlluminateHttpRequest;
class RequireJson
{
public function handle(Request $request, Closure $next)
{
if (!$request->expectsJson()) {
return response()->json(['error' => 'JSON required'], 406);
}
return $next($request);
}
}
?>
Результат выполнения кода при запросе без заголовка Accept: application/json:
{"error": "JSON required"}