mirror of
http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore.git
synced 2026-01-15 07:15:06 +08:00
74 lines
2.4 KiB
PHP
74 lines
2.4 KiB
PHP
<?php
|
|
/**
|
|
* RestfulCoreMiddleware.php@HDK-Core
|
|
*
|
|
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
|
* Powered by PhpStorm
|
|
* Created on 2023/1/14
|
|
*/
|
|
|
|
namespace Singularity\HDK\Core\Middleware;
|
|
|
|
use Hyperf\Contract\Arrayable;
|
|
use Hyperf\Contract\Jsonable;
|
|
use Hyperf\Contract\LengthAwarePaginatorInterface;
|
|
use Hyperf\Di\Annotation\Inject;
|
|
use Hyperf\HttpMessage\Server\ResponsePlusProxy;
|
|
use Hyperf\HttpServer\CoreMiddleware;
|
|
use Psr\Http\Message\ServerRequestInterface;
|
|
use Singularity\HDK\Core\Service\UtilsService;
|
|
use Swow\Psr7\Message\ResponsePlusInterface;
|
|
|
|
/**
|
|
* Singularity\HDK\Core\Middleware\RestfulCoreMiddleware@HDK-Core
|
|
*
|
|
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
|
* Powered by PhpStorm
|
|
* Created on 2023/1/14
|
|
*
|
|
* @deprecated
|
|
* @see CommonCoreMiddleware
|
|
*/
|
|
class RestfulCoreMiddleware extends CoreMiddleware
|
|
{
|
|
#[Inject]
|
|
private UtilsService $utilsService;
|
|
|
|
/**
|
|
* @template TKey of array-key
|
|
* @template TValue
|
|
* @param null|array<TKey, TValue>|Arrayable<TKey, TValue>|Jsonable|string $response
|
|
* @param ServerRequestInterface $request
|
|
*
|
|
* @return ResponsePlusInterface
|
|
*/
|
|
protected function transferToResponse(
|
|
$response,
|
|
ServerRequestInterface $request
|
|
): ResponsePlusInterface {
|
|
// 分页数据
|
|
if ($response instanceof LengthAwarePaginatorInterface) {
|
|
$fact_response = $this->response()
|
|
->withHeader('Per-Page', (string)$response->perPage())
|
|
->withHeader('Total', (string)$response->total())
|
|
->withHeader('Current-Page', (string)$response->currentPage())
|
|
->withHeader('Total-Pages', (string)$response->hasPages());
|
|
$fact_response = $this->utilsService->extendLinkToHeader($fact_response, $response->nextPageUrl(), 'next');
|
|
$fact_response = $this->utilsService->extendLinkToHeader(
|
|
$fact_response,
|
|
$response->url($response->lastPage()),
|
|
'last'
|
|
);
|
|
$fact_response = $this->utilsService->extendLinkToHeader($fact_response, $response->url(1), 'first');
|
|
$resp = $this->utilsService->extendLinkToHeader(
|
|
$fact_response,
|
|
$response->previousPageUrl(),
|
|
'prev'
|
|
);
|
|
return new ResponsePlusProxy($resp);
|
|
}
|
|
|
|
return parent::transferToResponse($response, $request);
|
|
}
|
|
}
|