GraphQL(一)- 简介
GraphQL是Facebook创造的基于Graph的API查询语言,本文开始对GraphQL进行学习。
本文介绍GraphQL的基本概念以及一个简单的Apollo Server实例
GraphQL 简介
graphql 是一种用于 API 的查询语言,对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,减少数据的冗余。
GraphQL并不是一个面向图数据库的查询语言,而是一个数据抽象层,包括数据格式、数据关联、查询方式定义与实现等等一揽子的东西。GraphQL也并不是一个具体的后端编程框架,如果将REST看做适合于简单逻辑的查询标准,那么GraphQL可以做一个独立的抽象层,通过对于多个REST风格的简单的接口的排列组合提供更多复杂多变的查询方式。与REST相比,GraphQL定义了更严格、可扩展、可维护的数据查询方式。
GraphQL 支持多种编程语言:
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}`);
});