fix(CoreMiddleware): 修复如果直接输出 ResponseInterface 实例会报错的问题

Signed-off-by: 李东云 <dongyu.li@luxcreo.ai>
This commit is contained in:
李东云
2024-01-18 13:52:16 +08:00
parent 2167fd209a
commit 762acbb368

View File

@@ -47,14 +47,14 @@ class CommonCoreMiddleware extends CoreMiddleware
*/
protected function transferToResponse(
$response,
ServerRequestInterface $request
ServerRequestInterface $request,
): ResponsePlusInterface {
$style = $this->apiStyleService->get();
if ($style === ApiStyleService::RESTFUL) {
$response = $this->transferToRestfulResponse($response, $request);
} else {
$response = $this->transferToClassicResponse($response, $request);
if (!($response instanceof ResponseInterface)) {
$response = $style === ApiStyleService::RESTFUL
? $this->transferToRestfulResponse($response, $request)
: $this->transferToClassicResponse($response, $request);
}
return new ResponsePlusProxy($response);
@@ -68,7 +68,7 @@ class CommonCoreMiddleware extends CoreMiddleware
*/
protected function transferToRestfulResponse(
null|array|Arrayable|Jsonable|ResponseInterface|string $response,
ServerRequestInterface $request
ServerRequestInterface $request,
): ResponseInterface {
// 分页数据
if ($response instanceof LengthAwarePaginatorInterface) {
@@ -103,7 +103,7 @@ class CommonCoreMiddleware extends CoreMiddleware
*/
protected function transferToClassicResponse(
null|array|Arrayable|Jsonable|ResponseInterface|string $response,
ServerRequestInterface $request
ServerRequestInterface $request,
): ResponseInterface {
$code_name = config('common.response.code_name');
$message_name = config('common.response.message_name');
@@ -162,6 +162,9 @@ class CommonCoreMiddleware extends CoreMiddleware
new SwooleStream(Json::encode($response))
);
}
if ($response instanceof ResponseInterface) {
return $response;
}
// 其他默认按字符串处理
return $this->response()->withAddedHeader(Header::CONTENT_TYPE, 'text/plain')->withBody(
new SwooleStream((string)$response)