在现代 Web 应用程序中,API 是一个非常重要的组成部分。在构建一个可扩展的 Web 应用程序时,我们需要使用一种灵活的 API 设计,这样我们就可以轻松地添加、更新和删除功能。在这篇文章中,我们将介绍如何使用 Express.js 和 GraphQL 创建可扩展的 API。
什么是 Express.js?
Express.js 是一个流行的 Node.js Web 框架,它提供了一组强大的功能,可以帮助我们轻松地构建 Web 应用程序和 API。Express.js 提供了一个简单的路由系统,可以帮助我们管理 HTTP 请求和响应。它还提供了一些中间件,可以帮助我们处理请求和响应,例如解析 JSON 和处理错误。
什么是 GraphQL?
GraphQL 是一个用于 API 的查询语言,它可以帮助我们构建灵活的 API。GraphQL 可以让客户端指定需要的数据,这样我们就可以减少不必要的数据传输。GraphQL 还提供了一个强大的类型系统,可以帮助我们验证数据的正确性。
如何使用 Express.js 和 GraphQL?
首先,我们需要安装 Express.js 和 GraphQL:
npm install express graphql express-graphql
然后,我们可以创建一个 Express.js 应用程序:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ----------- - - --------------------------- ----- --- - ---------- ------------------- ------------- ------- -- ----- -- ------- ------ --------- ---- -- ------- ------- -- ---- ---------------- -- -- - ------------------- ------- -- ---- ------- ---
在这个应用程序中,我们使用了 graphqlHTTP
中间件来处理 GraphQL 请求。我们需要提供一个 GraphQL schema,这个 schema 定义了我们的数据类型和查询。我们还设置了 graphiql
选项,这样我们就可以在浏览器中打开 GraphQL UI。
接下来,我们需要定义我们的 GraphQL schema。我们可以使用 GraphQLSchema
类来定义我们的 schema。
-- -------------------- ---- ------- ----- - -------------- ------------------ ------------- - - ------------------- ----- ------ - --- --------------- ------ --- ------------------- ----- -------- ------- - ------ - ----- -------------- -------- -- -- ------- ------- - - -- ---
在这个 schema 中,我们定义了一个 Query
类型,它包含了一个 hello
字段,这个字段返回一个字符串。我们还定义了一个 resolve
函数,它返回 "Hello, world!"
。
现在,我们可以在浏览器中打开 http://localhost:3000/graphql
,这样我们就可以使用 GraphQL UI 来测试我们的 API。
我们可以在左侧的窗口中输入以下查询:
{ hello }
然后,我们可以点击右侧的“运行”按钮来执行查询。我们应该会在右侧的窗口中看到以下结果:
{ "data": { "hello": "Hello, world!" } }
这是我们的 API 返回的数据。
如何扩展 API?
现在,我们已经创建了一个简单的 GraphQL API。但是,我们如何扩展它呢?
首先,我们可以添加更多的字段到我们的 Query
类型中。例如,我们可以添加一个 time
字段,它返回当前时间:
-- -------------------- ---- ------- ----- - ------------------ ------------- - - ------------------- ----- ------ - --- --------------- ------ --- ------------------- ----- -------- ------- - ------ - ----- -------------- -------- -- -- ------- ------- -- ----- - ----- -------------- -------- -- -- --- -------------------- - - -- ---
现在,我们可以在 GraphQL UI 中测试我们的新字段:
{ time }
这个查询应该会返回当前时间的 ISO 字符串。
我们还可以添加更多的类型到我们的 schema 中。例如,我们可以添加一个 User
类型,它包含一个 id
字段和一个 name
字段:
-- -------------------- ---- ------- ----- - ------------------ -------------- ---------- - - ------------------- ----- -------- - --- ------------------- ----- ------- ------- - --- - ----- ---------- -- ----- - ----- ------------- - - --- ----- ------ - --- --------------- ------ --- ------------------- ----- -------- ------- - ------ - ----- -------------- -------- -- -- ------- ------- -- ----- - ----- -------------- -------- -- -- --- -------------------- -- ----- - ----- --------- -------- -- -- -- --- -- ----- ----- ---- -- - - -- ---
现在,我们可以在 GraphQL UI 中测试我们的 User
类型:
{ user { id name } }
这个查询应该会返回一个包含 id
和 name
字段的对象。
总结
在这篇文章中,我们介绍了如何使用 Express.js 和 GraphQL 创建可扩展的 API。我们学习了如何使用 Express.js 和 graphqlHTTP
中间件来处理 GraphQL 请求,以及如何定义我们的 GraphQL schema。我们还学习了如何扩展我们的 API,添加更多的字段和类型。
如果你想了解更多关于 Express.js 和 GraphQL 的内容,可以查看官方文档:
希望这篇文章能够帮助你学习如何创建可扩展的 API!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65f95a02d10417a2225239bf