配置
配置文件位于/config/graph.php。
默认为如下内容:
<?php
return [
'types' => [
'graph' => [
'query' => \app\http\graph\QueryType::class
],
'user' => [
'query' => \app\http\graph\User\UserType::class
]
],
'schema' => [
'graph'
],
'routePrefix' => 'api/'
];
| 配置项 | 说明 |
|---|---|
| types | 所有GraphQL的Type |
| schema | 定义入口Type |
| routePrefix | 路由前缀 |
types
用于定义你在项目中所使用的Types,例如
'types' => [
'user' => [
'query' => \app\http\graph\UserType::class
'mutation' => \app\http\graph\UserMutationType::class
]
]
此时在此定义user之后,我们就可以使用Types::user()获取这个Type,例如。
<?php
namespace app\http\graph;
use \smilecc\think\Support\Types;
use \smilecc\think\Support\ObjectType;
class QueryType extends ObjectType
{
public function fields()
{
return [
'user' => Types::user()
];
}
}
在默认情况下调用Types::user()会自动实例化配置中query所对应的class,而如果需要实例化mutation的话,那么只需要调用Types::user('mutation')即可。
schema
schema是定义入口type的数组,例如默认内容中我们定义了:
'schema' => [
'graph'
]
这时我们的http://example.com/api/graph就会变成一个入口,我们在设置将这个地址endpoint,就可以将它作为请求的入口了。
所以我们可以有多个入口,例如
<?php
return [
'types' => [
'user' => [
'query' => \app\http\graph\User\UserType::class
],
'admin' => [
'query' => \app\http\graph\Admin\AdminType::class
]
],
'schema' => [
'user',
'admin'
],
'routePrefix' => 'api/'
];
这样我们就会拥有 /api/user 和 /api/admin 两个入口来处理不同的业务了。
routePrefix
routePrefix 是路由的前缀,默认的配置中使用的是 api/ ,此时我们使用 api/user 来作为入口,如果我们不喜欢 api/ 可以将其自定义,例如将其修改为 v1/ 后,那我们我们的入口就会变成 /v1/user。