uglymanfirst / laravel-api_responses
这是一个用于API响应的Laravel格式。
1.0.2
2017-07-18 14:10 UTC
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2024-09-16 23:13:30 UTC
README
欢迎使用FTD默认API响应!
- 关于
- 安装
- 如何使用
- 成功方法
- 分页方法
- 错误方法
- 成功、分页和错误方法的进阶使用
- 自定义方法
- 默认状态码方法
- 默认状态码方法的代码列表
关于
该软件包是为了扩展Laravel框架的响应系统,并将其提升到{json:api}网站所描述的标准而创建的1。
除了创建更友好和可读的格式之外,这些响应还考虑了根据最新代码控制头部。
安装
使用composer安装我们的包
composer require ftd/default-api-response
并在您的Laravel /config/app.php文件中调用提供者
'providers' => [ ... /* * FTD Default API Response */ FTD\DefaultAPIResponse\DefaultAPIResponseServiceProvider::class, ],
现在已完成,我们准备出发!
如何使用
FTD API Response为我们提供了5个新方法
- 成功
- 分页
- 错误
- 自定义
- 默认状态码
每个方法都有特定的使用方式,但总是很简单。
成功方法
此方法将抛出状态码头 200 并将您的内容放入一个 data 包装器中
示例
public function index() { return response()->success(App\User::all()); }
结果
{ "data": [ { "id": 1, "name": "Rodolfo", "email": "rodolfo@ftdapi.com", "created_at": null, "updated_at": null }, { "id": 2, "name": "Shirley", "email": "shirlei@ftdapi.com", "created_at": "2017-06-16 01:02:03", "updated_at": null } ] }
示例
public function show(User $user) { return response()->success($user); }
结果
{ "data": { "id": 1, "name": "Rodolfo", "email": "rodolfo@ftdapi.com", "created_at": null, "updated_at": null } }
分页方法
此方法将抛出状态码头 200 并将您的内容放入一个 data 包装器中,并创建另一个名为 meta 的包装器,用于分页属性
示例
public function index() { $users = App\User::paginate(2); return response()->paginate($users); }
结果
{ "meta": { "pagination": { "current_page": 2, "from": 3, "last_page": 3, "next_page_url": "http://ftdapi.com/api?page=3", "path": "http://ftdapi.com/api", "per_page": 2, "prev_page_url": "http://ftdapi.com/api?page=1", "to": 4, "total": 6 } }, "data": [ { "id": 3, "name": "Marley", "email": "marley@ftdapi.com", "created_at": "2017-06-15 00:00:01", "updated_at": null }, { "id": 4, "name": "Steve", "email": "steve@ftdapi.com", "created_at": "2017-06-16 01:02:03", "updated_at": null } ] }
错误方法
此方法将抛出状态码头 400 并将您的内容放入一个 errors 包装器中
示例
//User Custom Request public function rules() { return [ 'name' => 'required|string|max:255', 'username' => 'required|unique:users|string|max:255', 'password' => 'required|string|max:255' ]; } ... public function response(array $errors) { return response()->error($errors); }
结果
{ "errors": [ "Name must be provided.", "Username must be provided.", "Password must be provided." ] }
成功、分页和错误方法的进阶使用
如果您需要更改这些方法的默认状态码,可以提供第二个参数,例如
... return response()->success($data, 201); ... return response()->paginate($data, 206); ... return response()->error($data, 401);
自定义方法
此方法用于需要更多控制整个响应的用户
- 默认 内容 为 null
- 默认 头部状态码 为 200
- 默认 额外头部 为 null
- 默认 头部内容类型 为 'application/json'
示例
public function myCustomMethod() { return response()->custom( $content = [ "Name" => "Rodolfo", "Age"=>13 ], $status = 200, $headers = ["X-USER-INFO" => TRUE], $headerContentType = 'application/json' ); }
结果: 在您的头部您将看到
"X-USER-INFO" : true
或
"X-USER-INFO" : 1
取决于您使用的浏览器。
最后,响应体将接收内容,但 没有 默认的 data 包装器
{ "Name": "Rodolfo", "Age": 13 }
如果您需要强制下载PDF文件,例如,此方法是正确的方法。
默认状态码方法
此方法将抛出头部状态码,具体取决于哪个代码,将默认消息内容放入一个 data 或 errors 包装器中
示例
public function store() { return response()->defaultStatusCode(400); }
结果
{ "errors": [ "Bad Request" ] }