Это прямо там, в документации, вы хотите использовать после промежуточного программного обеспечения (следующий код - сверху моей головы, и оно должно работать):
<?php
namespace App\Http\Middleware;
use Closure;
class AfterMiddleware
{
public function handle($request, Closure $next)
{
/** @var array $data */ // you need to return array from controller
$data = $next($request);
return response()->json($data, 200, ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'],
JSON_UNESCAPED_UNICODE);
}
}
При вышеуказанном подходе мыможет обнаружить два анти-паттерна:
- создание ответа в промежуточном программном обеспечении (вы должны сделать это в controller )
- с использованием неэкранированного ответа JSON, создатели Laravel сделали по умолчаниюсбежал один, так зачем его менять?!
Удаление промежуточного программного обеспечения и использование только контроллера
Вставьте следующий код в app / Http / Controller.php
protected function jsonResponse($data, $code = 200)
{
return response()->json($data, $code,
['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'], JSON_UNESCAPED_UNICODE);
}
в любом из контроллеров, которые расширены базовым контроллером (app / Http / Controller.php), которые вы можете использовать $this->jsonResponse($data);
Как это делают профессионалы
Они используют красноречивые ресурсы или если что-то еще происходит фрактал - это путь (в Laravel используйте оболочку spatie - https://github.com/spatie/laravel-fractal).