arinasystems / laravel-json-response
在Laravel中轻松生成JSON响应。
1.0.4
2022-02-23 09:49 UTC
Requires
- php: ^7.2.5|^8.0
- laravel/framework: ^9.0|^8.0|^7.0|^6.0
Requires (Dev)
- orchestra/testbench: >=3.5
- phpunit/phpunit: >=4.8
README
Laravel JSON响应
一个可扩展且强大的Laravel API响应包。
- 本地化响应
- 预设响应状态
- 属性构建器
- 数据转换器
- JSON异常处理器
安装
您可以通过composer安装此包
composer require arinasystems/laravel-json-response
该包将自动注册其服务提供者。
您可以选择使用以下命令发布配置文件:
php artisan vendor:publish --tag="json-response:config"
基本用法
use ArinaSystems\JsonResponse\Facades\JsonResponse; /** * Display a listing of products. * * @return \Illuminate\Http\Response */ public function index() { $products = Product::paginate(2); return JsonResponse::json('ok', ['data' => ProductResource::collection($products)]); }
只需一行代码,您的API客户端即可获得此响应
{ "success": true, "code": 200, "http_code": 200, "locale": "en", "message": "ok", "data": [ { "id": "7OLgzrB1QVBQWMNZ3Rx08a24wAGEjqYVbeV", "name": "Aquafina Plastic Water Gallon – 18.9 L", "in_stock": true, "in_cart": false ... }, { "id": "g3RbPoyMmPg9zr7qGZjW50Lp61aDlwnVOkE", "name": "Aquafina Plastic Water Bottle – 1.5 L", "in_stock": true, "in_cart": true ... } ], "additional": null, "links": { "first": "http://example.com/api/customer/products?page=1", "last": "http://example.com/api/customer/products?page=2", "prev": null, "next": "http://example.com/api/customer/products?page=2" }, "meta": { "current_page": 1, "from": 1, "last_page": 2, "path": "http://example.com/api/customer/products", "per_page": "2", "to": 2, "total": 3 } }
配置
您可以从config/json-response.php
文件中自定义响应配置。
<?php return [ 'attributes' => [ 'success' => [ 'builder' => \ArinaSystems\JsonResponse\Builders\SuccessAttributeBuilder::class, 'value' => true, 'on-response' => true, 'on-error' => true, ], 'code' => [ 'builder' => null, 'value' => 200, 'on-response' => true, 'on-error' => true, ], 'http_code' => [ 'builder' => null, 'value' => 200, 'on-response' => true, 'on-error' => true, ], 'locale' => [ 'builder' => \ArinaSystems\JsonResponse\Builders\LocaleAttributeBuilder::class, 'value' => null, 'on-response' => true, 'on-error' => true, ], 'message' => [ 'builder' => \ArinaSystems\JsonResponse\Builders\MessageAttributeBuilder::class, 'value' => null, 'on-response' => true, 'on-error' => true, ], 'data' => [ 'builder' => \ArinaSystems\JsonResponse\Builders\DataAttributeBuilder::class, 'value' => null, 'on-response' => true, 'on-error' => false, ], 'headers' => [ 'value' => [], 'on-response' => false, 'on-error' => false, ], 'exception' => [ 'builder' => \ArinaSystems\JsonResponse\Builders\ExceptionAttributeBuilder::class, 'value' => null, 'on-response' => false, 'on-error' => true, ], 'errors' => [ 'builder' => \ArinaSystems\JsonResponse\Builders\ErrorsAttributeBuilder::class, 'value' => [], 'on-response' => false, 'on-error' => true, ], 'debug' => [ 'builder' => \ArinaSystems\JsonResponse\Builders\DebugAttributeBuilder::class, 'value' => null, 'on-response' => false, 'on-error' => true, ], 'additional' => [ 'builder' => null, 'value' => null, 'on-response' => true, 'on-error' => true, ], 'links' => [ 'builder' => null, 'value' => null, 'on-response' => true, 'on-error' => true, ], 'meta' => [ 'builder' => null, 'value' => null, 'on-response' => true, 'on-error' => true, ], ], 'status' => [ 'ok' => \ArinaSystems\JsonResponse\Status\OkStatus::class, ], 'transformers' => [ \Illuminate\Database\Eloquent\Model::class => \ArinaSystems\JsonResponse\Transformers\EloquentTransformer::class, \Illuminate\Http\Resources\Json\JsonResource::class => \ArinaSystems\JsonResponse\Transformers\JsonResourceTransformer::class, ], 'encoding_options' => JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT | JSON_UNESCAPED_UNICODE, 'debug' => env('APP_DEBUG', false), 'message_translations' => true, ];
响应结构
配置文件中的第一个部分允许您设置正常响应和错误响应属性。每个属性数组包含四个选项
- builder: 用于构建属性值。(构建器类或null以禁用)
- value: 如果未传入,则是一个默认值。(混合类型)
- on-response: 确定此属性是否将出现在正常响应中。(布尔值)
- on-error: 确定此属性是否将出现在错误响应中。(布尔值)
预设状态
在transformers数组中定义"Status"数组中的预设状态。键定义状态名称,值是案例类的名称。
数据转换器
指定给定对象类型的数据转换器作为键,转换器类作为值。
JSON编码选项
在'encoding_options'中设置JSON编码选项。
调试模式
在'debug'选项中启用/禁用调试模式。
消息翻译
在'message_translations'选项中启用/禁用区域设置响应消息。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志
贡献
有关详细信息,请参阅贡献
安全
如果您发现任何与安全相关的问题,请通过电子邮件info@arinasystems.com联系,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件