GraphQL 是一种用于 API 的查询语言,通过它可以轻松地定义数据的查询和变更操作。而Sails-graphql-2 是一个用于在Sails中使用GraphQL 的 npm 包。在本篇文章中,我会详细介绍如何使用 sails-graphql-2 这个包来构建一个 GraphQL API。
步骤
1. 安装 sails-graphql-2 包
npm install sails-graphql-2 --save
2. 配置Sails
在Sails中配置连接数据库和设置模型之前,需要配置sails-graphql-2 。我们需要在 config/graphql.js
文件中定义一个GraphQL Schema 和对应的resolvers。以下是一个简单的例子:
-- -------------------- ---- ------- ---------------------- - - ------- - ---- ---- - --- --- ----- ------ ------ ------ ---------- ------ ---------- ------ - ---- ----- - ------ ------ - ---- -------- - ----------------- ----------------- ---- -------------- ---- ------ ------------------ ---- -------------- ----- ---- - ----- --------------- - ----- ------- ------ ------- - ----- --------------- - ----- ------ ------ ------ - -- ---------- - ------ - ------ ----- --- --- - ------ -- -- - ----- ----- - ----- --------------------- ------ ------ -- -- --------- - ----------- ----- --- - ----- -- - ------ -- -- - ----- ---- - ----- ---------------------------------- ------ ----- -- ----------- ----- --- - --- ----- -- - ------ -- -- - ----- ---- - ----- ----------------------- -- -------------- ------ ----- -- ----------- ----- --- - -- -- - ------ -- -- - ----- ---- - ----- ------------------------ -- --- ------ ----- -- -- -- --
3. 定义 Sails 模型
在这个例子中,我们需要为用户定义一个模型。在 /api/models/User.js
文件中,定义一个简单的用户模型。
module.exports = { attributes: { name: { type: "string", required: true }, email: { type: "string", required: true }, }, };
4. 定义路由
在 config/routes.js
文件中添加一个路由来处理 GraphQL 请求。
"POST /graphql": { action: "graphql", csrf: false },
5. 在控制器中处理请求
在 /api/controllers/graphql.js
文件中,添加如下代码:
module.exports = { async index(req, res) { const { graphql } = sails.helpers; const { query, variables, operationName } = req.body; const result = await graphql(query, variables, operationName, req); return res.json(result); }, };
6. 测试
现在我们可以使用 GraphQL Playground 或 Postman 来发送 POST 请求到 /graphql
endpoint 测试我们的 API。以下是一个查询用户的示例:
query { users { id name email } }
7. 授权
sails-graphql-2 包支持 Sails 的 policies 机制。在 policy.js
文件中,定义一个policy 来授权用户。以下是一个简单的例子:
-- -------------------- ---- ------- -------------- - ----- ----- ---- ----- -- - ----- - --------------- - - -------------- ----- ---- - ----- ---------------------- --- -------------- -- - ------ -------------- --- -- ------- - ------ ---------------- - -------- - ----- ------ ------- --
结论
通过这个简单的教程,你可以学习如何在 Sails 中使用 sails-graphql-2 包来构建一个 GraphQL API。同时,通过如何配置 Sails 和定义模型以及路由和控制器,你可以了解如何为新的项目提供基础的结构和授权机制。在实际项目中,你可以按照这个模式来扩展和优化你的 GraphQL API。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671d130d092702382298c