首页  >  文章  >  web前端  >  GraphQL

GraphQL

PHPz
PHPz原创
2024-08-10 16:38:03672浏览

GraphQL

什么是 GraphQL?

GraphQL 是一种强大的 API 查询语言,也是使用数据执行这些查询的运行时。 GraphQL 由 Facebook 于 2012 年开发,并于 2015 年作为开源项目发布,它允许客户准确请求他们需要的数据——不多也不少。

主要特点:

  • 单个端点:与通常使用多个端点的 REST 不同,GraphQL 对所有请求使用单个端点。
  • 灵活的查询:客户端可以在单个查询中仅请求他们需要的特定数据。
  • 强类型:模式定义 API 中的类型和关系,确保强大的数据验证和内省。

GraphQL 与 REST 有何不同

1。数据获取:

  • REST:需要多个端点来获取相关数据。例如,您可能需要点击 /users,然后点击 /users/{id}/posts。
  • GraphQL:允许在单个查询中获取所有必需的数据。您可以通过一次请求获取用户详细信息及其帖子。

2。过度获取和不足获取:

  • REST:经常返回超出需要的数据(过度获取)或需要额外的请求来获取更多数据(获取不足)。
  • GraphQL:客户端准确指定他们需要的数据,消除过度获取和获取不足的情况。

3。版本控制:

  • REST:API 版本可能需要更新(例如,/v1/users 到 /v2/users)。
  • GraphQL:无需版本控制即可发展。可以添加新字段和类型,而不会破坏现有查询。

基本 GraphQL 查询示例

以下是编写 GraphQL 查询来获取用户信息的方法:

query {
  user(id: "1") {
    name
    email
    posts {
      title
      content
    }
  }
}

在此查询中:

  • user(id: "1") 指定获取 ID 为 1 的用户。
  • 请求嵌套字段名称、电子邮件和帖子。
  • 帖子包含子字段标题和内容,允许嵌套数据结构。

设置简单的 GraphQL 服务器

要开始使用 GraphQL,让我们使用 Node.js 和 Apollo Server 设置一个基本服务器。

1。安装依赖项:

npm install apollo-server graphql

2。创建基本服务器:

创建一个名为index.js的文件并添加以下代码:

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

// Define your type definitions
const typeDefs = gql`
  type Post {
    title: String
    content: String
  }

  type User {
    name: String
    email: String
    posts: [Post]
  }

  type Query {
    user(id: String!): User
  }
`;

// Define your resolvers
const resolvers = {
  Query: {
    user: (_, { id }) => ({
      name: "John Doe",
      email: "john.doe@example.com",
      posts: [
        { title: "GraphQL Basics", content: "Learning GraphQL is fun!" }
      ]
    }),
  },
};

// Create an Apollo Server instance
const server = new ApolloServer({ typeDefs, resolvers });

// Start the server
server.listen().then(({ url }) => {
  console.log(`? Server ready at ${url}`);
});

3。运行服务器:

node index.js

您的服务器现在将运行,您可以使用 GraphiQL(可在 http://localhost:4000 获取)或任何 GraphQL 客户端对其进行测试。

为什么使用 GraphQL?

  • 高效数据加载:准确请求您需要的内容,减少不必要的数据传输。
  • 架构和类型安全:有效执行数据结构并验证数据。
  • 开发者体验:GraphiQL 和 Apollo Client 等工具通过自动完成和文档等功能提高工作效率。

立即开始使用 GraphQL!

通过使用 GraphQL,您可以构建更高效、灵活且可扩展的 API。请继续关注下周,我们将深入探讨模式设计和突变等高级 GraphQL 主题。

以上是GraphQL的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn