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