@The-Devoyage/subgraph
一个基于简单配置文件的动态 GraphQL Web 服务器启动工具。定义配置以告知 subgraph 您数据的形状和可用的数据源。Subgraph 会自动连接到您的数据库,生成 CRU(D) 解析器、身份验证/授权控制等。
按您的需求部署并拥有自己的数据。Subgraph 帮助您与数据交互,使您能够专注于构建界面而不是构建 Web 服务器。
自行承担生产风险 - 从我们的预 alpha 状态到 v0.1.0 的版本,还有一点工作要做。话虽如此,我希望您喜欢到目前为止所做的一切。
文档
Subgraph 文档已移至我们的新 文档网站。
快速入门
查看新文档页面中的 快速入门!
许可证
使用 subgraph 无需许可证 20 分钟或通过购买 许可证密钥 启用无限制访问。请确保在服务配置中使用密钥启动服务以禁用超时。
API
CLI 选项
--help
- 查看可用命令。
--config <path>
- 配置文件的路径。
--port <port>
- 服务运行的端口号。
--log-level <level>
- 选项包括 info
或 debug
--watch
- 监听包含配置文件的目录中所有文件的变化。防抖 1 秒以避免重复重启。如果初始配置不正确,则服务器不会启动。
--generate-keypair
- 生成一个可以在微服务之间共享或创建一致私有密钥的密钥对。
配置文件选项
服务* |
描述 |
类型 |
name* |
此服务的名称。 |
字符串 |
version |
API的版本。 |
字符串 |
data_sources* |
数据所在位置。 |
DataSource[] |
entities* |
要定义的数据。 |
Entity[] |
cors |
GraphQL服务器的CORS选项。 |
Cors配置 |
guards |
在服务级别应用的守卫。 |
Guard[] |
imports |
一个数组,包含从单独文件导入实体的路径。 |
String[] |
port |
运行服务的端口号。 |
Int |
license_key |
提供一个密钥以移除20分钟演示限制。 |
字符串 |
host |
启用在0.0.0.0上托管的能力,而不是在localhost/127.0.0.1上。 |
bool |
数据源
DataSource* |
描述 |
类型 |
Mongo |
Mongo数据源 |
Mongo配置 |
HTTP |
HTTP数据源 |
HTTP配置 |
SQL |
SQL数据源 |
SQL配置 |
Mongo配置 |
描述 |
类型 |
name* |
Mongo数据源的名称。 |
字符串 |
uri* |
Mongo的连接字符串。 |
字符串 |
db* |
Mongo数据库的名称。 |
字符串 |
HTTP配置 |
描述 |
类型 |
name* |
HTTP数据源的名称。 |
字符串 |
url* |
HTTP数据源的基准URL。 |
字符串 |
default_headers |
每次请求都包含的标题。 |
DefaultHeader[] |
默认标题 |
描述 |
类型 |
name |
键值标题对的键。 |
字符串 |
value |
键值标题对的值。 |
字符串 |
SQL配置 |
描述 |
类型 |
name* |
SQL数据源的名称。 |
字符串 |
uri* |
SQLX兼容URI |
字符串 |
dialect * |
SQL数据库的方言。 |
DialectOption |
sqlite_extensions |
指定sqlite扩展文件路径的数组。 |
字符串 |
migrations_path |
包含要运行的迁移的文件夹路径。 |
字符串 |
注意 如果提供,则自动加载扩展。如果使用带有标志 --migrate run
的子图运行,则执行迁移。
DialectOption |
SQLITE |
POSTGRES |
MYSQL |
资产选项 |
描述 |
类型 |
path* |
资产目录的文件路径。 |
字符串 |
route* |
通过GET请求访问目录的路由。 |
字符串 |
SSR选项 |
描述 |
类型 |
path* |
资产目录的文件路径。 |
字符串 |
route* |
通过GET请求访问目录的路由。 |
字符串 |
enable_hydrate |
允许HTML文件通过handlebars进行水合。 |
布尔值 |
Cors配置
Cors配置 |
描述 |
类型 |
allow_any_origin |
一个布尔值,指示是否允许任何来源。 |
布尔值 |
allow_origins |
允许来源列表 |
String[] |
allow_headers |
允许头列表 |
String[] |
allow_methods |
允许的HTTP方法列表 |
MethodConfig[] |
MethodConfig |
描述 |
类型 |
method* |
允许的方法的字符串表示。 |
MethodOption |
MethodOption |
选项 |
Get |
Post |
Put |
Delete |
Head |
Trace |
Connect |
Patch |
Entity
Entity* |
描述 |
类型 |
name* |
实体的名称。 |
字符串 |
fields* |
实体的字段。 |
Field[] |
data_source |
实体数据的来源。 |
实体数据源配置 |
guards |
在实体级别应用的守卫。 |
Guard[] |
required |
非空实体。 |
bool |
exclude_from_output |
移除解析此实体的能力。 |
bool |
实体数据源配置 |
描述 |
类型 |
from* |
相关HTTP数据源的名称。 |
字符串 |
collection |
相关Mongo集合的名称。 |
字符串 |
table |
相关SQL表的名称。 |
字符串 |
path |
相对于相关HTTP数据源路径的路径/端点。 |
字符串 |
resolvers |
为每个生成的解析器应用的配置。 |
实体解析器 |
实体解析器 |
描述 |
类型 |
FindOne |
Find One解析器的配置 |
实体解析器配置 |
FindMany |
Find Many解析器的配置 |
实体解析器配置 |
CreateOne |
创建单个解析器的配置 |
实体解析器配置 |
UpdateOne |
更新单个解析器的配置 |
实体解析器配置 |
UpdateMany |
更新单个解析器的配置 |
实体解析器配置 |
内部 |
在调用守卫时才能与内部类型交互。 |
无 |
实体解析器配置 |
描述 |
类型 |
search_query |
用于附加到实体路径的参数化搜索查询。 |
字符串 |
path |
用于附加到(HTTP数据源)的参数化URL路径(端点)。 |
字符串 |
method |
覆盖解析器(HTTP数据源)的默认方法 |
MethodOption |
guards |
在解析器级别应用的守卫。 |
Guard[] |
Field
Field* |
描述 |
类型 |
name* |
字段的名称。 |
字符串 |
scalar* |
字段的标量类型。 |
标量选项 |
required |
字段是否为必需。默认为false。 |
bool |
exclude_from_input |
不应应用于相关输入的解析器列表。 |
ExcludeFromInput[] |
exclude_from_output |
删除解析此字段的能力。 |
bool |
list |
将标量定义为列表或单个值。 |
bool |
as_type |
将字段与另一个实体类型关联,以进行连接/扩展。 |
字符串 |
join_on |
要连接的类型的外键。 |
字符串 |
join_from |
执行关联时从中连接的源键。 |
字符串 |
guards |
应用于字段的守卫列表。 |
Guard |
default_value |
为更新和创建解析器应用的计算值eval expr。使用 "null" 表示 null 。 |
字符串 |
is_virtual |
在GraphQL输入中定义数据库中不存在的属性。 |
bool |
eager |
根据另一个实体的字段搜索实体。 |
bool |
primary_key |
使用字段覆盖默认的主键(Mongo的 _id,SQL的 id)。 |
bool |
enum_values |
表示字段可能值的字符串列表。 |
字符串 |
标量选项 |
字符串 |
Int |
布尔值 |
ObjectID |
Object |
Enum |
UUID |
DateTime |
ResolverType |
FindOne |
FindMany |
CreateOne |
UpdateOne |
UpdateMany |
ExcludeFromInput |
FindOne |
FindMany |
CreateOne |
UpdateOne |
UpdateMany |
UpdateOneQuery |
UpdateManyQuery |
All |
Guard
Guard |
描述 |
类型 |
name* |
守卫的名称。在调用守卫时用作键值对的键。 |
字符串 |
if_expr* |
用于评估布尔表达式的 EvalExpr 语法。 |
字符串 |
then_msg* |
如果调用守卫,键值对的键。 |
字符串 |
context |
定义来自其他数据源调用的额外上下文选项。 |
GuardDataContext[] |
GuardDataContext |
描述 |
类型 |
entity_name* |
源上下文的实体名称。 |
字符串 |
name |
要添加的上下文的唯一标识符。 |
字符串 |
query* |
填充上下文的GraphQL查询表达式。 |
字符串 |
variables* |
表示替代和替换的元组向量的向量。 |
[String, String][] |
在 if_expr
语法内可用的额外守卫函数。目前在EvalExpr中不支持。
额外的守卫函数 |
描述 |
用法 |
headers |
从请求头中提取一个头部值。 |
headers("authoriation") == "1234" |
input |
从用户输入中提取一个值。返回元组。 |
contains(input("query", "comments.user.id"), "23") |
token_data |
从认证令牌中提取数据,标识符和user_uuid。 |
token_data("user_uuid") != input("created_by") |
resolver_type |
在守卫函数中显示解析器的类型 |
resolver_type() == "FindOne" |
context |
从守卫提供的上下文中提取一个值。返回元组。 |
every(context("user.id"), 23) |
now |
返回当前的 datetime 。 |
now() |
uuid |
生成UUIDv4。 |
uuid() |