drpdigital / laravel-json-api-parser
Laravel对jsonapi.org解析器的集成
0.0.5
2019-07-10 16:48 UTC
Requires
- drpdigital/json-api-parser: ^0.0
- illuminate/container: 5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*
- illuminate/support: 5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*
- illuminate/validation: 5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*
Requires (Dev)
- orchestra/testbench: ~3.0
- phpunit/phpunit: 5.7.*|~6.0
README
这是一个Laravel框架对JSON API解析器的集成。
JSON API解析器允许您读取和验证按照jsonapi.org规范结构化的请求。
版本兼容性
安装
您可以通过composer安装此包
composer require drpdigital/laravel-json-api-parser
如果您使用的是Laravel 5.5及以上版本,该包将自动注册自己。
如果您使用的是Laravel 5.4或更低版本,那么您需要在您的config/app.php
中注册服务提供者。
'providers' => [ ... \Drp\LaravelJsonApiParser\JsonApiParserServiceProvider::class, ... ]
文档
如何验证您的资源
当您想在有效负载中验证资源时,您需要给JsonApiValidator
一个ValidatorExecutor
。这可以通过以下几种方式实现。所有这些方式中的第一个参数是需要验证的资源类型的字符串。
例如,如果您有一个这样的请求
{ "data": { "id": 1, "type": "user", "attributes": { "name": "Bob" } } }
那么您的第一个参数将是'user'
。
使用::make
$jsonApiValidator = app(JsonApiValidator::class); $jsonApiValidator->validator( 'user', \Drp\LaravelJsonApiParser\Validation\Validator::make( ['name' => 'required'], ['name.required' => 'You must provide a name'] ) );
您提供的规则和消息是Laravel支持的,因为我们的验证器只是Laravel验证器的包装。
使用自定义类
当使用自定义验证器类时,您需要扩展我们的验证器类\Drp\LaravelJsonApiParser\Validation\Validator
。您然后在类中指定一个rules
和messages
函数,并分别在这些函数中返回规则和消息数组。
<?php namespace App\Validators; use Drp\LaravelJsonApiParser\Validation\Validator; class UserValidator extends Validator { public function rules() { return [ 'name' => 'required', ]; } public function messages() { return [ 'name.required' => 'Testing Message', ]; } }
$jsonApiValidator = app(JsonApiValidator::class); $jsonApiValidator->validator( 'user', new UserValidator() );
如何将资源解析为模型
有关如何使用JSON API解析器的更多文档,请访问基本包的仓库。
示例用法
请求
{ "data": { "type": "brochure", "attributes": { "title": "My Brochure", "page_size": "A4" } } }
处理器
public function store(Request $request) : array { $collection = json_api() ->resolver('brochure', function (array $data) { return Brochure::create($data); })->parse($request->json()->all()); }
贡献
在GitHub上提出任何问题或功能请求,并在贡献时请遵循我们的指南。
如果您发现了此包的安全漏洞,请直接通过电子邮件联系Chris,邮箱为chris.normansell@drpgroup.com
许可证
Laravel JSON API解析器集成及其基本包均受[MIT许可证]约束。