前言
GraphQL 是一种用于构建 Web API 的查询语言和运行时。它可以让前端开发人员更加灵活地获取后端数据,而不需要和传统的 REST API 一样去请求一些冗余和不需要的数据。在 Golang 中,我们可以使用现成的库来快速实现 GraphQL API,而本文将会介绍如何在 Golang 中使用 GraphQL。
设计 GraphQL Schema
在开始之前,我们需要先确定好我们的 GraphQL Schema。Schema 定义了客户端可以如何查询数据,以及数据查询的结构和类型。在 Golang 中,我们可以使用 github.com/graphql-go/graphql
这个第三方库来定义我们的 Schema。
------ - ------------------------------- - --- -------- - --------------------------------------- ----- ------- ------- --------------- ----- --------------- ----- ------------ -- -------- --------------- ----- --------------- -- --------- --------------- ----- --------------- -- -- -- --- --------- - --------------------------------------- ----- ------------ ------- --------------- ------- --------------- ----- --------- ------------ ---- - ---- -- ---- ----- ---------------------------- ----- ------------------------ ----- ------------ -- -- -------- ----------- ---------------------- ------------- ------ - --- -- -- ----------------------- -- -- - -- ----- ----- ---- ---- -------- ------ ---- --- - ------ ---- --- -- -- -- -- --- ------- - - --------------------------------------- ------ ---------- --
以上代码将会定义一个名为 Book
的类型,它包含有 id
、title
和 author
三个属性。RootQuery
定义了我们的查询接口,我们可以通过 book
这个字段来查询一本书的详细信息。在 Resolve
函数中,我们可以根据客户端传递的查询参数,来查询数据库中的数据并返回。
启动 GraphQL 服务
定义好了 Schema,我们还需要编写后端 API 来处理客户端的查询请求。在 Golang 中,我们可以使用 github.com/graphql-go/handler
这个库来启动 GraphQL 服务。
------ - --------- ----- ----- ------------------------------- ------------------------------- ------------------------ ---------- - ---- ------ - - -- --------------- - -- ---------------------------- ------- -------- ------- ----- --------- ----- --------------- -------- ---------------- - -------------- --------------- - -- ----- --- --- --- ---- -------- -- ---- ---- ------- ----- ------ --- -- -- ------------------------ -- ------------------- ------- -- ----------------------- -------------------------------------- --- -
以上代码会在 http://localhost:8080/api/graphql
上启动一个 GraphQL API 服务,客户端可以通过该 URL 来访问我们的 API 并查询数据。
发送 GraphQL 查询请求
最后,我们需要编写前端代码来发送 GraphQL 查询请求,获取服务端返回的数据。在前端中,我们可以使用 axios
这个库来发送查询请求。
------ ----- ---- -------- ----- ----- - - ----- ------------ ----- - -------- ---- - -- ----- ------ - - -- -------------------------- - ------ ------ ---------- - --- -- -- ----- ---- ---- ---- -- ----------- -- - -------------------------------- ---
以上代码定义了一个 query
字符串,其中使用了变量 $id
,用于让客户端通过传递参数来查询指定的数据。在 axios.post
方法中,我们将 query
和 variables
这两个参数传递给 API 服务端,并通过 res.data.data.book
来获取服务端返回的数据。不仅如此,GraphQL 还允许我们在查询中只获取我们关心的字段,而不必去请求整张表中的所有数据,这可以让前端页面加载更快,查询效率也更高。
总结
本文介绍了如何在 Golang 中使用 GraphQL,包括定义 Schema 和启动 GraphQL 服务等内容。通过使用 GraphQL,前端开发人员可以更加灵活地获取后端数据,并获取更好的用户体验。如果你现在正在寻找一种新的 API 设计方式,那么 GraphQL 或许可以成为你的一个不错的选择。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/664ff1a0d3423812e41bdcad