ajangi / php-rest-response
1.1.2
2021-02-18 17:25 UTC
Requires
- php: >=7.0.0
- ext-json: *
- symfony/http-foundation: >=5.0
This package is auto-updated.
Last update: 2024-09-24 15:59:23 UTC
README
PHP-REST-RESPONSE
一个用于统一微服务间响应的 PHP 标准响应结构。
要求
- 最低 PHP 版本 : 7.0.0
安装
composer require ajangi/php-rest-response
如何使用?
成功响应示例
... use Symfony\Component\HttpFoundation\Response; use IceResponse\IceResponse; ... public function index(): Response { $status_code = Response::HTTP_OK; $result = IceResponse::SUCCESS_RESPONSE; $data = ['users' => "List of users for example"]; $messages = []; $developer_message = ''; $response = new IceResponse($status_code,$result,$data,$messages,$developer_message); return $response->send(); }
上述代码简单地返回
{ "status_code": 200, "result": "SUCCESS", "developer_message": "", "messages": [], "data": { "users": "List of users for example" } }
或者你可以简单地使用
... use Symfony\Component\HttpFoundation\Response; use IceResponse\IceResponse; ... public function index(): Response { return (new SuccessResponse())->send(); }
来获取
{ "status_code": 200, "result": "SUCCESS", "developer_message": "", "messages": [], "data": [] }
错误响应示例
... use Symfony\Component\HttpFoundation\Response; use IceResponse\IceResponse; ... public function index(): Response { $status_code = Response::HTTP_NOT_FOUND; $result = IceResponse::ERROR_RESPONSE; $data = []; $messages = [ 'entity' => ['entity not found!'] // This structure is recommended ]; $developer_message = 'Dear Front-End developer! You may have a typo!'; $response = new IceResponse($status_code,$result,$data,$messages,$developer_message); return $response->send(); }
// or simply use ... use Symfony\Component\HttpFoundation\Response; use IceResponse\NotFoundErrorResponse; ... public function index(): Response { $messages = [ 'entity' => ['entity not found!'] // This structure is recommended ]; $developer_message = 'Dear Front-End developer! You may have a typo!'; return (new NotFoundErrorResponse($messages, $developer_message))->send(); }
上述代码片段简单地返回
{ "status_code": 404, "result": "ERROR", "developer_message": "Dear Front-End developer! You may have a typo!", "messages": { "entity": [ "entity not found!" ] }, "data": [] }
扩展新类
例如,假设你想定义一个用于403访问被拒绝响应的类
// define a new class like this <?php namespace App; use IceResponse\IceResponse; use Symfony\Component\HttpFoundation\Response; class ForbiddenErrorResponse extends IceResponse { public function __construct() { $status_code = Response::HTTP_FORBIDDEN; $result = IceResponse::ERROR_RESPONSE; $data = []; $messages = [ 'access' => [ 'Forbidden!!' ] ]; $developer_message = ''; parent::__construct($status_code, $result, $data, $messages, $developer_message); } }
使用 ForbiddenErrorResponse 类
... use Symfony\Component\HttpFoundation\Response; use IceResponse\NotFoundErrorResponse; ... public function index(): Response { return (new ForbiddenErrorResponse())->send(); }
然后你将获得响应
{ "status_code": 403, "result": "ERROR", "developer_message": "", "messages": { "access": [ "Forbidden!!" ] }, "data": [] }
贡献
有关详细信息,请参阅 CONTRIBUTING