重新核心中间件
继承 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))));
}
}