关于图的思考
图是将很多真实世界现象变成模型的强大工具,因为它们和我们自然的心智模型和基本过程的口头描述很相似。通过 GraphQL,你会把自己的业务领域通过定义 schema 建模成一张图;在你的 schema 里,你定义不同类型的节点以及它们之间是如何连接的。在客户端这边,这创建了一种类似于面向对象编程的模式:引用其他类型的类型。在服务器端,由于 GraphQL 定义了接口,你可以在任何后端自由的使用它。
考虑下把你的 GraphQL schema 作为一种给你的团队和用户的沟通的共同语言。为了建立一个好的 schema,你必须检查你用来描述业务的日常语言。
你应该在哪里定义真正的业务逻辑?你应该在哪里验证,检查用户权限?就是在专门的业务逻辑层里。你的业务逻辑层应作为执行业务域规则的唯一正确来源。
通过HTTP提供服务
理论上graphql并没有限制你使用的通信协议,但是这里我们推荐使用http协议来提供你的graphql服务。
URI和路由
HTTP 通常与 REST 相关联,REST 使用“资源”作为其核心概念。相比之下,GraphQL 的概念模型是一个实体图。因此,GraphQL 中的实体无法通过 URL 识别。相反,GraphQL 服务器在单个 URL /入口端点(通常是 /graphql
)上运行,并且所有提供服务的 GraphQL 请求都应被导向此入口端点。
HTTP方法
你的http方法应该能够支持GET和POST两种方法:
GET:应当在 “query” 查询字符串(query string)中指定 GraphQL 查询。
{
me {
name
}
}
此请求可以通过get发送
http://myapi/graphql?query={me{name}}
POST:标准的 GraphQL POST 请求应当使用 applica