РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
476 of 1392 menu

Метод wantsJson

Метод wantsJson класса Request позволяет определить, ожидает ли клиентский запрос JSON-ответ. Проверка выполняется на основе заголовка Accept, который браузер или API-клиент отправляют вместе с запросом. Метод возвращает true, если заголовок содержит указание на JSON-формат, и false в противном случае.

Этот метод особенно полезен при создании API, которые должны обрабатывать как веб-запросы (HTML), так и AJAX/JSON-запросы, возвращая соответствующий ответ. В отличие от метода expectsJson, который учитывает также другие факторы (например, наличие параметров запроса), wantsJson основывается исключительно на анализе заголовка Accept.

Синтаксис

<?php $request->wantsJson(); ?>

Метод не принимает параметров и возвращает значение типа bool.

Пример

Проверим, ожидает ли клиент JSON-ответ в методе контроллера:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; use AppModelsUser; class UserController extends Controller { public function index(Request $request) { if ($request->wantsJson()) { $users = User::all(); return response()->json([ 'status' => 'success', 'data' => $users ]); } $users = User::paginate(10); return view('users.index', ['users' => $users]); } } ?>

Пример

Используем метод для обработки как обычных, так и JSON-запросов в одном маршруте:

<?php use IlluminateSupportFacadesRoute; use AppHttpControllersProductController; Route::get('/products', function (Request $request) { if ($request->wantsJson()) { $products = Product::with('category')->get(); return response()->json($products); } return view('products.index'); }); ?>

Пример

Комбинируем метод с другими методами проверки для более точного определения типа запроса:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class ApiController extends Controller { public function handle(Request $request) { $isJson = $request->wantsJson(); $isAjax = $request->ajax(); if ($isJson && $isAjax) { return response()->json([ 'message' => 'JSON request from AJAX' ]); } if ($isJson) { return response()->json([ 'message' => 'JSON request' ]); } return view('handle'); } } ?>

Пример

Применяем метод в middleware для автоматического определения типа ответа:

<?php namespace AppHttpMiddleware; use Closure; use IlluminateHttpRequest; class JsonMiddleware { public function handle(Request $request, Closure $next) { if ($request->wantsJson()) { $request->headers->set('Accept', 'application/json'); } return $next($request); } } ?>

Результат работы middleware при JSON-запросе:

"Headers updated: Accept: application/json"

Смотрите также

  • метод expectsJson,
    который выполняет комплексную проверку ожидания JSON
  • метод ajax,
    который определяет AJAX-запрос
  • метод json,
    который возвращает JSON-ответ
  • метод header,
    который получает значение заголовка запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить