配置
配置文件位于/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
。