delatbabel/jsonresponses

一个包含用于Laravel 5.1构建的API常见JSON响应的特质。

v1.2.5 2016-03-15 08:36 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:31:35 UTC


README

Build Status StyleCI Latest Stable Version Total Downloads

Laravel 5.1构建的API的常见JSON响应。

特性

这个特质执行以下操作

  • 它返回通用的(预定义的)JSON响应,用于常见的API操作,如创建、更新、删除、索引和显示资源。
  • 它可以轻松扩展和修改
  • 它可以在应用程序的任何地方使用(控制器、路由等...)

安装

composer require delatbabel/jsonresponses

在你的类中执行以下操作

use Delatbabel\JsonResponses\JsonResponses;

class MyController
{
    use JsonResponses;
    // ...
}

示例

带数据的成功响应

return $this->respondSuccess('OK', ['time' => gmtime()]);

失败响应

return $this->respondInternalError();

带消息和数据失败响应

return $this->respondNotAcceptable(
    'Mugwumps are not found in swamps',
    ['location' => 'desert']);

选择状态码

https://httpstatuses.com/http://racksburg.com/choosing-an-http-status-code/

架构

原理

许多API都有用于返回成功/失败响应、响应代码、消息和一些数据的通用响应格式。有几个包包括Syndra(Mario Basic),它们做类似的事情,但我还是回到了这个,这是我最初作为特质实现的原始实现,因为它可以做我需要做的所有事情。

这为创建、更新、删除、索引等操作提供了通用的JSON响应,以及通用的错误格式。

特质还是不是特质?

许多开发者批评PHP 5.4+特质的使用,认为它们实际上只是隐藏简单剪切/粘贴代码的方法。当然,它们有缺点,其中最明显的是难以为它们提供独立的测试。

在这种情况下,我还是决定将其实现为特质,因为我希望所有API控制器都返回相同的响应格式,这是实现它的简单方法。

许多软件设计者建议特质不应该提供数据,只提供方法,这样它们看起来更像Ruby的“混合”。然而,PHP确实为特质提供了一些有限的保存数据的能力,因此我实现了一个简单的受保护变量来在调用之间存储响应代码。

响应格式

此特质发出的响应格式如下(JSON格式)

response: {
    success: true,      // true or false
    message: message,   // arbitrary message goes here
    response_code: code // response code goes here
},
data: { ...
}                       // arbitrary data structure goes here

HTTP响应代码在响应散列中重复,以便于访问。