delatbabel / jsonresponses
一个包含用于Laravel 5.1构建的API常见JSON响应的特质。
v1.2.5
2016-03-15 08:36 UTC
Requires
- php: >=5.4.0
- illuminate/http: ^5.1
- illuminate/support: ^5.1
This package is not auto-updated.
Last update: 2024-09-14 18:31:35 UTC
README
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响应代码在响应散列中重复,以便于访问。