tyloo / api-response-helpers
一个允许在整个应用程序中保持一致的API响应的超级简单的包
v1.0.1
2021-09-20 16:26 UTC
Requires
- php: ^8.0
- ext-json: *
- symfony/http-foundation: ^5.3
Requires (Dev)
- ergebnis/phpstan-rules: ^0.15.3
- friendsofphp/php-cs-fixer: ^3.1
- phpstan/phpstan: ^0.12.99
- phpstan/phpstan-strict-rules: ^0.12.11
- phpunit/phpunit: ^9.5
- thecodingmachine/phpstan-strict-rules: ^0.12.1
This package is auto-updated.
Last update: 2024-09-20 22:48:26 UTC
README
API响应助手
一个允许在整个PHP应用程序(Symfony、Laravel)中保持一致的API响应的简单包。
需求
- PHP
^8.0
安装/使用
composer require tyloo/api-response-helpers
只需在控制器中引用所需的特质
<?php namespace App\Controller; use Tyloo\ApiResponseHelpers; use Symfony\Component\HttpFoundation\JsonResponse; class OrdersController { use ApiResponseHelpers; public function index(): JsonResponse { return $this->respondWithSuccess(); } }
可选地,该特质可以在基控制器中导入。
可用方法
respondNotFound(string|Exception $message, ?string $key = 'error')
返回HTTP状态码404
,可以可选地传递一个异常对象。
respondWithSuccess(?array $contents = [])
返回HTTP状态码200
respondOk(string $message)
返回HTTP状态码200
respondUnAuthenticated(?string $message = null)
返回HTTP状态码401
respondForbidden(?string $message = null)
返回HTTP状态码403
respondError(?string $message = null)
返回HTTP状态码400
respondCreated(?array $data = [])
返回HTTP状态码201
,带有可选的响应数据
respondNoContent(?array $data = [])
返回HTTP状态码204
,带有可选的响应数据。严格来说,响应体应该是空的。然而,添加了可选返回数据的功能,以处理旧项目。在您的项目中,您可以直接调用该方法,省略参数,以生成正确的204
响应,例如:return $this->respondNoContent()
与其他对象类型一起使用
除了普通的PHP array
外,以下数据类型也可以传递给相关方法
- 实现原生PHP
JsonSerializable
契约的对象
这允许传递和自动转换各种对象类型。
以下是几个可以传递的常见对象类型。
动机
确保在整个应用程序中保持一致的JSON API响应。主要的动机是基于一个非常古老的继承项目。该项目包含了许多用于返回错误的的方法/结构
return new JsonResponse(['error' => $error], 400)
return new JsonResponse(['data' => ['error' => $error], 400)
return new JsonResponse(['message' => $error], Response::HTTP_BAD_REQUEST)
return new JsonResponse([$error], 400)
- 等等。
我想添加一个简单的特质来保持这种一致性,在这种情况下
$this->respondError('Ouch')
贡献
欢迎任何想法。请随时提交任何问题或拉取请求。
测试
vendor/bin/phpunit
致谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。