snappdoctor/ php-rest-response
1.1.1
2021-02-17 23:05 UTC
Requires
- php: >=7.0.0
- ext-json: *
- symfony/http-foundation: >=5.0
This package is auto-updated.
Last update: 2024-09-18 06:47:18 UTC
README
PHP-REST-RESPONSE
PHP标准响应结构,用于统一微服务之间的响应。
需求
- 最低PHP版本:7.0.0
安装
composer require ajangi/php-rest-response
如何使用?
成功响应示例
... use Symfony\Component\HttpFoundation\Response; use DrResponse\DrResponse; ... public function index(): Response { $status_code = Response::HTTP_OK; $result = DrResponse::SUCCESS_RESPONSE; $data = ['users' => "List of users for example"]; $messages = []; $developer_message = ''; $response = new DrResponse($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 DrResponse\DrResponse; ... public function index(): Response { return (new SuccessResponse())->send(); }
来获取
{
"status_code": 200,
"result": "SUCCESS",
"developer_message": "",
"messages": [],
"data": []
}
错误响应示例
... use Symfony\Component\HttpFoundation\Response; use DrResponse\DrResponse; ... public function index(): Response { $status_code = Response::HTTP_NOT_FOUND; $result = DrResponse::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 DrResponse($status_code,$result,$data,$messages,$developer_message); return $response->send(); }
// or simply use ... use Symfony\Component\HttpFoundation\Response; use DrResponse\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 DrResponse\DrResponse; use Symfony\Component\HttpFoundation\Response; class ForbiddenErrorResponse extends DrResponse { public function __construct() { $status_code = Response::HTTP_FORBIDDEN; $result = DrResponse::ERROR_RESPONSE; $data = []; $messages = [ 'access' => [ 'Forbidden!!' ] ]; $developer_message = ''; parent::__construct($status_code, $result, $data, $messages, $developer_message); } }
使用ForbiddenErrorResponse类
... use Symfony\Component\HttpFoundation\Response; use DrResponse\NotFoundErrorResponse; ... public function index(): Response { return (new ForbiddenErrorResponse())->send(); }
然后你会得到响应
{
"status_code": 403,
"result": "ERROR",
"developer_message": "",
"messages": {
"access": [
"Forbidden!!"
]
},
"data": []
}