GraphQL(一)- 简介

GraphQL是Facebook创造的基于Graph的API查询语言,本文开始对GraphQL进行学习。
本文介绍GraphQL的基本概念以及一个简单的Apollo Server实例

GraphQL 简介

graphql 是一种用于 API 的查询语言,对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,减少数据的冗余。

GraphQL并不是一个面向图数据库的查询语言,而是一个数据抽象层,包括数据格式、数据关联、查询方式定义与实现等等一揽子的东西。GraphQL也并不是一个具体的后端编程框架,如果将REST看做适合于简单逻辑的查询标准,那么GraphQL可以做一个独立的抽象层,通过对于多个REST风格的简单的接口的排列组合提供更多复杂多变的查询方式。与REST相比,GraphQL定义了更严格、可扩展、可维护的数据查询方式。

image

GraphQL 支持多种编程语言:

image

Apollo GraphQL

Apollo 是一个开源的 GraphQL 开发平台, 提供了符合 GraphQL 规范的服务端和客户端实现。使用 Apollo 可以帮助我们更方便快捷的开发使用 GraphQL。

用Apollo写一个最基本的Server,包含一个最基本的TypeDef和Resolver:

import {ApolloServer, gql} from 'apollo-server'

const typeDefs = gql`
  # Comments in GraphQL strings (such as this one) start with the hash (#) symbol.

  # This "Book" type defines the queryable fields for every book in our data source.
  type Book {
    title: String
    author: String
    price: Float
  }
`

const books = [
  {
    title: 'The Awakening',
    author: 'Kate Chopin',
    price: 20.99,
  },
  {
    title: 'City of Glass',
    author: 'Paul Auster',
    price: 6.99,
  },
];

const resolvers = {
  Query: {
    books: () => {
      return books;
    },
  },
};

const server = new ApolloServer({
  typeDefs: typeDefs,
  resolvers: resolvers,
  csrfPrevention: true,
  cache: 'bounded',
});

// The `listen` method launches a web server.
server.listen().then(({ url }) => {
  console.log(`🚀  Server ready at ${url}`);
});

posted @ 2023-01-16 11:44  Asp1rant  阅读(219)  评论(0编辑  收藏  举报