-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #82 from okazy/feat/doc-api
取得可能なデータの追加とQuery/Mutationの追加のドキュメントを追加
- Loading branch information
Showing
3 changed files
with
118 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
--- | ||
layout: home | ||
author_profile: true | ||
permalink: /customize/allow_list | ||
--- | ||
|
||
## 取得可能なデータの追加 | ||
|
||
取得可能なデータは許可リスト方式で設定されています。 | ||
|
||
デフォルトの許可リストは `Resource/config/services.yaml` に定義されています。 | ||
|
||
```yaml | ||
|
||
# 省略 | ||
|
||
services: | ||
|
||
# 省略 | ||
|
||
core.api.allow_list: | ||
class: ArrayObject | ||
tags: ['eccube.api.allow_list'] | ||
arguments: | ||
- # | ||
Eccube\Entity\AuthorityRole: ['id', 'deny_url', 'create_date', 'update_date', 'Authority', 'Creator'] | ||
Eccube\Entity\BaseInfo: ['id', 'company_name', 'company_kana', 'postal_code', 'addr01', 'addr02', ... ] | ||
# 以降省略 | ||
``` | ||
|
||
許可リスト方式のため、カスタマイズで追加された Entity はデフォルトで取得できません。 | ||
カスタマイズで追加された Entity の取得を許可する場合は `eccube.api.allow_list` タグを付けたコンポーネントを定義します。 | ||
サービスIDは `[プラグインコード].api.allow_list` の形を推奨します。 | ||
|
||
例えばメーカー管理プラグインで利用する場合は以下のような `ArrayObject` の定義をプラグイン内の `services.yaml` に追加します。 | ||
|
||
```yaml | ||
services: | ||
|
||
maker4.api.allow_list: | ||
class: ArrayObject | ||
tags: ['eccube.api.allow_list'] | ||
arguments: | ||
- # | ||
Eccube\Entity\Product: ['maker_url', 'Maker'] | ||
Plugin\Maker4\Entity\Maker: ['id', 'name', 'sort_no', 'create_date', 'update_date'] | ||
``` | ||
プラグインに許可リストが含まれない場合は、 `Customize` ディレクトリ以下の `services.yaml` でも定義できます。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
--- | ||
layout: home | ||
author_profile: true | ||
permalink: /customize/query | ||
--- | ||
|
||
## Query/Mutationの追加 | ||
|
||
Query は `Plugin\Api\GraphQL\Query` インタフェースを、 Mutation は `Plugin\Api\GraphQL\Mutation` インタフェースを実装したクラスを作成することで Query/Mutation の追加が可能です。 | ||
|
||
`Hello Query!` の文字列を返す最小のQueryの実装例は以下です。 | ||
|
||
```php | ||
<?php | ||
|
||
namespace Customize\GraphQL\Query; | ||
|
||
use GraphQL\Type\Definition\Type; | ||
use Plugin\Api\GraphQL\Query; | ||
|
||
class HelloQuery implements Query | ||
{ | ||
public function getName() | ||
{ | ||
return 'hello'; | ||
} | ||
|
||
public function getQuery() | ||
{ | ||
return [ | ||
'type' => Type::string(), | ||
'resolve' => function ($root) { | ||
return 'Hello Query!'; | ||
}, | ||
]; | ||
} | ||
} | ||
``` | ||
|
||
リクエスト | ||
|
||
```graphql | ||
query { | ||
hello | ||
} | ||
``` | ||
|
||
レスポンス | ||
|
||
```json | ||
{ | ||
"data": { | ||
"hello": "Hello Query!" | ||
} | ||
} | ||
``` | ||
|
||
同様に `Mutation` を実装し、 `resolve` 内で更新処理を記載すると Mutation を追加できます。 | ||
|
||
### 参考 | ||
|
||
プラグインのデフォルトの Query および Mutation の実装は `Api/GraphQL/Query` および `Api/GraphQL/Mutation` にあります。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters