Перехватить ответ (включая ответы проверки) перед отправкой конечному пользователю - PullRequest
0 голосов
/ 02 июня 2019

В моем приложении есть промежуточное ПО CORS, которое я зарегистрировал как глобальное промежуточное ПО.ТАК, как предполагается, он должен запускаться при каждом http-запросе.Моя конечная цель - хранить каждый запрос и их ответы, включая ответы об ошибках валидатора, в моей БД. Все работает нормально, но когда любой мой запрос не выполняется из-за правил валидатора, он не проходит через мой метод завершения промежуточного программного обеспечения CORS.Пожалуйста, помогите.

Я зарегистрировал свое промежуточное программное обеспечение CORS в качестве глобального промежуточного программного обеспечения, которое запускается для каждого HTTP-запроса, и оно почти полностью заполняет мои требования по регистрации каждого запроса и ответа, но оно не регистрирует ответы об ошибках валидатора.

// bootstrap / app.php

$app->middleware([
App\Http\Middleware\ExampleMiddleware::class,
App\Http\Middleware\CORS::class
]);

// App/Http/Middleware/CORS

// Log every request in the DB after response is ready to be dispatched
public function terminate($request, $response){
/// Code to intercept and store values in DB
}

Мне нужна помощь в том, что я делаю что-то не так или я должен идти в другом направлении.Я просто хочу регистрировать каждый запрос и ответ, включая ответы об ошибках валидатора, в моей БД, используя

1 Ответ

0 голосов
/ 02 июня 2019

Для регистрации запросов вы можете сделать что-то вроде

<?php

namespace App\Middleware;

use Closure;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator;

class LogRequests
{
    public function handle($request, Closure $next)
    {
        $this->logRequest($request);

        $response = $next($request);

        return $response;
    }

    private function logRequest($request)
    {
        $validation = Validator::make($request->toArray(),[
           'etc' => 'required',
        ]);

        if ($validation->fails()) {
          $firstError = $validation->errors()->first();
          $orJson = $validation->errors()->toJson()
          // DB::insert should go here
        }

    }
}

Вам также нужно будет зарегистрировать его, перейти к app/Http/Kernel.php и поместить его в глобальное промежуточное ПО или любую группу.

...