oscabrera/laravel-json-api-format-paginate
Composer 安装命令:
composer require oscabrera/laravel-json-api-format-paginate
包简介
this package allows you to paginate resources using the JSON:API format
README 文档
README
Please follow the documentation at laravel-json-api-format-paginate.
This package provides three classes to respond with Resource and Collection in JSON:API format. It simplifies the transformation of Eloquent models and pagination results into JSON compliant responses.
Installation
Install the package via Composer:
composer require oscabrera/laravel-json-api-format-paginate
In the Model:
Is important use properties $fillable and $hidden in your model.
in $hidden you have to add id in your model.
protected $hidden = [ 'id', ];
In $fillable you should add all the properties you want to be returned by your model.
Usage
EntityResourceTransformer
EntityResourceTransformer transforms individual resources into JSON:API format.
<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; use Oscabrera\JsonApiFormatPaginate\Utilities\JsonApiPaginationTransformer; class UserController extends Controller { public function read(string $id) { $user = User::query()->where('id', $id)->first(); return new EntityResourceTransformer($user); } }
Example Result:
{
"data": {
"id": 2,
"type": "User",
"attributes": {
"name": "userOne",
"email": "userOne@example.com"
}
},
"links": {
"self": "http://localhost/users/2"
}
}
JsonApiResourceTransformer
JsonApiResourceTransformer transforms individual resources into JSON:API format.
<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; use Oscabrera\JsonApiFormatPaginate\Utilities\JsonApiPaginationTransformer; use Spatie\QueryBuilder\QueryBuilder; use Spatie\JsonApiPaginate\JsonApiPaginate; class UserController extends Controller { public function index() { $fields = $user->getFields(); $users = QueryBuilder::for(User::class) ->allowedFilters($fields) ->allowedSorts($fields) ->jsonPaginate(); return new JsonApiPaginationTransformer($users); } }
Example Result:
{
"data": [
{
"id": 2,
"type": "User",
"attributes": {
"id": 2,
"name": "1",
"email": "1",
"email_verified_at": "2024-05-18 14:53:42",
"password": "1",
"remember_token": "1",
"created_at": "2024-05-18T14:53:42.000000Z",
"updated_at": "2024-05-18T14:53:42.000000Z"
}
}
],
"links": {
"self": "http://localhost/users?page%5Bsize%5D=1&filter%5Bname%5D=1&page%5Bnumber%5D=1",
"first": "http://localhost/users?page%5Bsize%5D=1&filter%5Bname%5D=1&page%5Bnumber%5D=1",
"last": "http://localhost/users?page%5Bsize%5D=1&filter%5Bname%5D=1&page%5Bnumber%5D=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "http://localhost/users",
"per_page": 1,
"to": 1,
"total": 1
}
}
Integration with Spatie Packages
For filtering and sorting JSON:API responses, it is recommended to use the following Spatie packages:
-
spatie/laravel-json-api-paginate: To paginate JSON responses Documentation: spatie/laravel-json-api-paginate
-
spatie/laravel-query-builder: To build and apply queries. Documentation: spatie/laravel-query-builder
Using the QueryBuilder
To facilitate the use of QueryBuilder, the getFields method is added, which obtains the model columns from the $fillable and $hidden variables, and merges this data. This allows easy use of methods such as allowedFilters, allowedSorts, among others.
example:
$fields = $user->getFields(); $users = QueryBuilder::for(User::class) ->allowedFilters($fields) ->allowedSorts($fields) ->jsonPaginate();
More Information
For more information, visit the documentation.
oscabrera/laravel-json-api-format-paginate 适用场景与选型建议
oscabrera/laravel-json-api-format-paginate 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 945 次下载、GitHub Stars 达 0, 最近一次更新时间为 2024 年 06 月 06 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「format」 「laravel」 「paginate」 「json.api」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 oscabrera/laravel-json-api-format-paginate 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 oscabrera/laravel-json-api-format-paginate 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 oscabrera/laravel-json-api-format-paginate 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Provides a simple decimal/roman number converter
Softonic OpenApi validation formats extension
Tools to convert between .NET and PHP date formats
Adds the EDTF data type to Wikibase
Forked from https://github.com/deltaaskii/lara-pdf-merger. Add condition if(!class_exists('TCPDF')) (depreciated in php 7.2) to foreach.
统计信息
- 总下载量: 945
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 3
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-06-06