GraphQL-- 使用Apollo Server搭建Node服務端


一、關於Apollo Server

  Apollo Server是一種使用JS創建GraphQL服務端的一個方案。它的兼容性比較好,可以很好地和GraphQL客戶端進行兼容。同時它可以

  1. 獨立作為服務端進行
  2. 以插件的形式與現有的NodeJS 服務端程序進行兼容
  3. 可以作為一個GraphQL的數據網關。

  官網地址:https://www.apollographql.com/docs/apollo-server/

二、搭建Apollo GraphQL Server

  1) 和搭建Node Server類似。具體命令如下

npm init --yes
npm i apollo-server graphql
  • apollo-server 是Apollo Server的核心庫
  • graphql是用於構建GraphQL Schema和執行查詢的核心庫

  2) 使用Babel配置ES6

npm i @babel/cli @babel/core @babel/node @babel/preset-env

  3) 創建GraphQL Schema

  • 創建graphtype
    import { gql } from "apollo-server";
    
    export default gql`
      type Book {
        title: String
        author: String
      }
    `;
  •  創建query graphtype
import { gql } from "apollo-server";

export default gql`
  type Query {
    books: [Book]
  }
`;

 

import bookTypes from "./book.types";
import queries from "./queries";
export default [bookTypes, queries]; 

 

  • 創建resolver
import dataset from "../dataset"; // dataset即為數據源
const Query = {
  books: () => dataset.books,
};

const resolvers = {
  Query,
};
export default resolvers;

 

  • 創建schema
import { makeExecutableSchema } from "apollo-server";
import typeDefs from "@graphtypes";// 這是配置了alias,引用的是graph type的導出,即export default [bookTypes, queries];
import resolvers from "@resolver"; 
export
default makeExecutableSchema({ typeDefs, resolvers, });

 

  3) 配置啟動腳本

import "module-alias/register";
import { ApolloServer } from "apollo-server";
import schema from "@schema";
import plugins from "@plugins";
const port = 8080;
const server = new ApolloServer({
  schema,
  plugins,
  formatError: (err) => {
    // 設置響應的錯誤信息進行格式化處理
    return err.message;
  },
});

server.listen({ port }).then((serverInfo) => {
  console.log("====================================");
  console.log(`Apollo GraphQL Server are listening at ${serverInfo.url}`);
  console.log("====================================");
});

 

三、配置package.json

  "scripts": {
    "dev": "nodemon --exec babel-node index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

 

四、啟動和測試

運行命令:

npm run dev

 

項目會運行在http://localhost:8080

因為Apollo GraphQL Server將PlayGround整合進去了,所以可以直接使用playground進行調試

 

 項目代碼可查看:

https://gitee.com/KingGang/apollo-graphql-server-management

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM