首页 > 其他分享 >GraphQL (一)简介

GraphQL (一)简介

时间:2023-01-16 11:56:02浏览次数:31  
标签:const title 简介 server API GraphQL Apollo

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(`

标签:const,title,简介,server,API,GraphQL,Apollo
From: https://www.cnblogs.com/Asp1rant/p/17055074.html

相关文章

  • Android开发学习之路--Android Studio项目目录结构简介
       既然已经搭建好环境了,那就对AndroidStudio中项目目录结构做个简单的了解了,这里以最简单的Hello工程为例子,新建好工程后看如下三个工程视图:1、Android工程manifest......
  • 第十九节:Pinia简介及state、getter、action详解、常用Api、setup简化写法
    一. 简介       二.state       三.getter     四.action   五.常用Api    六.setup简化写法   ......
  • 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介
    目录普冉PY32系列(一)PY32F0系列32位CortexM0+MCU简介普冉PY32系列(二)UbuntuGCCToolchain和VSCode开发环境PY32F0系列上市其实相当长一段时间了,样品已经吃灰......
  • [0]为什么是SpinalHDL-Spinal简介
    [0]为什么是SpinalHDL-Spinal简介1.verilog/VHDL打咩稍微先说两句SpinalHDL,硬件描述语言(HDL)分为verilog/VHDL和其他(雾),不过确实是这样,众多eda基本只对这两种语言有良好支......
  • ATX server简介
    简介atxserver是移动设备管理平台;搭建这样的一个平台,需要 python3.x+nodejs+rethinkdb,及atxserver2和atxserver2-android-provider 其他部件的作用:1、rethink......
  • Android sqlite 使用简介
    进行Android应用开发时经常会用到数据库。Android系统支持sqlite数据库,在app开发过程中很容易通过SQLiteOpenHelper使用数据库,SQLiteOpenHelper依赖于Context对象,但是基于ui......
  • AEAD加密算法简介
    copyfrom:https://ez.analog.com/ez-blogs/b/engineerzone-spotlight/posts/authenticated-encryption如果仅仅加密,显然只能保证confidentiality,不能证明message是否被......
  • JS简介
    JS历史JavaScript诞生于1995年。NetSpace发布NetspaceNavigator2浏览器,提供了免费开发工具LiveScript,设计的主要目的是处理以前由服务器端语言负责的一些输入验证操......
  • Kubernetes组件简介
    Kubernetes组件简介Kubernetes(简称k8s)致力于提供跨主机集群的自动部署、扩展、高可用以及运行应用程序容器的平台。k8s是什么一个基于容器技术的分布式架构一个一站式......
  • 死锁简介
    哲学家就餐的问题。死锁:互相等待对方持有的资源而造成的谁的无法执行的情况叫做死锁。死锁处理:死锁预防死锁避免:判断一下该时间有没有一个进程处于安全序列死锁检测+......