重新核心中间件

继承 hyperf 核心中间件类,重写 transferToResponse 方法

将所有(除下载外)的正确响应经由 App\Com\ResponseCode::response 包装后返回给前端。

错误响应 在 App\Exception\Handler\AppExceptionHandler 中处理。


declare(strict_types=1);

namespace App\Middleware;

use App\Com\ResponseCode;
use Hyperf\HttpMessage\Stream\SwooleStream;
use App\Com\Json;
use Hyperf\Utils\Contracts\Arrayable;
use Hyperf\Utils\Contracts\Jsonable;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

class CoreMiddleware extends \Hyperf\HttpServer\CoreMiddleware
{

    /**
     * @param array|Arrayable|Jsonable|string $response
     * @param ServerRequestInterface $request
     * @return ResponseInterface
     */
    protected function transferToResponse($response, ServerRequestInterface $request): ResponseInterface
    {
        return $this->response()
            ->withAddedHeader('content-type', 'application/json')
            ->withBody(new SwooleStream(Json::encode(ResponseCode::response($response))));

    }
}

results matching ""

    No results matching ""