drpdigital/laravel-json-api-parser

Laravel对jsonapi.org解析器的集成

0.0.5 2019-07-10 16:48 UTC

This package is auto-updated.

Last update: 2024-09-11 15:13:22 UTC


README

Build Status Coverage Status GitHub Releases License

这是一个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。您然后在类中指定一个rulesmessages函数,并分别在这些函数中返回规则和消息数组。

<?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许可证]约束。