leeduc / json-api-builder
此包自动生成数据遵循 jsonapi.org。
v0.1.6
2016-07-08 04:19 UTC
Requires
- php: ~5.5|~7.0
- illuminate/support: ~5.2
- symfony/yaml: 3.0.*
Requires (Dev)
- fzaninotto/faker: ^1.6
- mockery/mockery: 0.9.*
- orchestra/testbench: ~3.2
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2024-09-14 18:47:42 UTC
README
此包自动生成数据遵循 jsonapi.org。
安装
通过 Composer
$ composer require leeduc/json-api-builder
完成此操作后,您需要将服务提供者添加到 app.php 配置文件中的 providers 数组中,如下所示
'providers' => [ // ... Leeduc\JsonApiBuilder\JsonApiBuilderServiceProvider::class, ]
接下来,在 app.php 配置文件中,在 aliases 数组下,您可能还想添加门面。
'aliases' => [ // ... 'JsonApiBuilder' => Leeduc\JsonApiBuilder\Facades\JsonApiBuilder::class, ]
用法
在资源文件夹 views 中构建模式
posts.view
= app\resources\views\posts\show.schema.php
return [ 'id' => $data->id, 'type' => class_basename($data), 'attributes' => [ 'name' => $data->name, 'email' => $data->email ], 'relationships' => [ 'posts' => [ 'partial' => 'posts.show', 'links' => [ 'self' => route('get_user', ['id' => $data->id]) . '/relationships/posts', 'related' => route('get_user', ['id' => $data->id]) . '/posts' ] ], 'comments' => [ 'partial' => 'comments.show', 'links' => [ 'self' => route('get_user', ['id' => $data->id]) . '/relationships/comments', 'related' => route('get_user', ['id' => $data->id]) . '/comments' ] ] ], 'links' => [ 'self' => route('get_user', ['id' => $data->id]) ] ];
构建数组
$data = $users = User::with('comments')->paginate(10); // List $data = $users = User::with('comments')->first(); // Object $builder = \JsonApiBuilder::setData($data) ->entity('view.path.name', function($data) { $data['id'] = 100; return $data; }) ->relationship(['comments']) ->included(['comments' => ['post_id', 'content']]); dd($builder->parse()); // Array data
构建 JSON
$builder = \JsonApiBuilder::setData($data) ->entity('package::view.path.name', function($data) { // custom entity data return $data; }) ->relationship(['comments']) ->included(['comments']) ->json(['version' => '1.0']) ->meta([ 'version' => '1.0' ]) ->pagination([ 'next' => 'example/next', 'pre' => 'example/pre' ]) ->response(); dd($builder); // Class Symfony\Component\HttpFoundation\Response dd($builder->getContent()); // Get Json
JSON 响应
{ "data": [ { "id": 1, "type": "user", "attributes": { "name": "Pj2EHmiLOH", "email": "Tqxfq6aZDk@gmail.com" }, "links": { "self": "http://example.com/user\/1" }, "relationships": { "comments": { "data": [ { "id": 2, "type": "comment" }, { "id": 8, "type": "comment" } ], "links": { "self": "http://example.com/user\/1\/relationships\/comments", "related": "http://example.com/user\/1\/comments" } } } } ], "included": [ { "id": 2, "type": "comment", "attributes": { "post_id": "3", "user_id": "1", "content": "UHXLbmJxySxiTTYdjzR539bNXjohgpCVj0WfwvmZWKUonhUipxJeHPh0AtTWqIZpzLZfixawJJEQwqILf93Co5edPOrKDfaqvkSQ" }, "relationships": { "user": { "data": [ { "id": 1, "type": "user" } ], "links": { "self": "http://example.com/comment\/2\/relationships\/user" } } } }, { "id": 8, "type": "comment", "attributes": { "post_id": "2", "user_id": "1", "content": "Y8kDX5EOQFtqoy4171bGFVNrvYgMRr9UVHQvD7Eed43YgzeZ1KFJipTFCMJVu6rtb4V8Fm14mv2t3aN26CRNgiOqDsGiMPbQyVJF" }, "relationships": { "user": { "data": [ { "id": 1, "type": "user" } ], "links": { "self": "http://example.com/comment\/8\/relationships\/user" } } } } ], "jsonapi": { "version": "1.0" }, "links": { "self": "http://example.com/test", "first": "http://example.com/test?page%5Bsize%5D=1&page%5Bnumber%5D=1", "next": "http://example.com/test?page%5Bsize%5D=1&page%5Bnumber%5D=2", "last": "http://example.com/test?page%5Bsize%5D=1&page%5Bnumber%5D=40" } }
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
贡献
有关详细信息,请参阅 CONTRIBUTING 和 CONDUCT。
安全性
如果您发现任何安全相关的问题,请通过电子邮件 lee.duc55@gmail.com 而不是使用问题跟踪器。
致谢
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。