@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() |