ajangi/php-rest-response

1.1.2 2021-02-18 17:25 UTC

This package is auto-updated.

Last update: 2024-09-24 15:59:23 UTC


README

Total Downloads Latest Stable Version License License

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