什么是 GraphQL?

100 阅读1分钟

什么是 GraphQL?

GraphQL 是一种用于 API 的查询语言,它允许客户端根据其需求精确地指定所需的数据结构。与传统的 RESTful API 不同,GraphQL 客户端可以通过单个请求获取多个资源,并且只返回它们需要的字段,而不需要多次请求不同的端点。

GraphQL 代码示例

1. 定义数据模型

首先,让我们定义一个简单的数据模型,例如一个博客应用程序中的文章和作者:

type Author {
  id: ID!
  name: String!
  articles: [Article!]!
}

type Article {
  id: ID!
  title: String!
  content: String!
  author: Author!
}
2. 定义查询

接下来,定义查询类型,允许客户端查询文章和作者:

type Query {
  article(id: ID!): Article
  author(id: ID!): Author
  articles: [Article!]!
  authors: [Author!]!
}
3. 定义解析器

在后端实现中,我们需要编写解析器函数来处理这些查询。这里给出一个简单的示例,假设我们有一些硬编码的数据:

const articlesData = [
  { id: '1', title: 'GraphQL Basics', content: 'Introduction to GraphQL', authorId: '1' },
  { id: '2', title: 'GraphQL Advantages', content: 'Benefits of using GraphQL', authorId: '2' }
];

const authorsData = [
  { id: '1', name: 'John Doe' },
  { id: '2', name: 'Jane Smith' }
];

const resolvers = {
  Query: {
    article: (parent, args, context, info) => articlesData.find(article => article.id === args.id),
    author: (parent, args, context, info) => authorsData.find(author => author.id === args.id),
    articles: () => articlesData,
    authors: () => authorsData
  },
  Article: {
    author: (parent, args, context, info) => authorsData.find(author => author.id === parent.authorId)
  }
};
4. 设置 GraphQL 服务器

最后,使用适当的框架(如 Apollo Server)设置 GraphQL 服务器,并将数据模型和解析器传递给它:

const { ApolloServer, gql } = require('apollo-server');

const typeDefs = gql`
  // 上面定义的类型和查询
`;

const server = new ApolloServer({ typeDefs, resolvers });

server.listen().then(({ url }) => {
  console.log(`GraphQL server running at ${url}`);
});