tyloo/api-response-helpers

一个允许在整个应用程序中保持一致的API响应的超级简单的包

v1.0.1 2021-09-20 16:26 UTC

This package is auto-updated.

Last update: 2024-09-20 22:48:26 UTC


README

run-tests Packagist Version Packagist PHP Version Packagist License

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)。有关更多信息,请参阅许可文件