使用 Apollo-Server-Express 从服务器中使用光标分页查询 REST API
Posted
技术标签:
【中文标题】使用 Apollo-Server-Express 从服务器中使用光标分页查询 REST API【英文标题】:Querying REST API with Cursor Pagination from Server with Apollo-Server-Express 【发布时间】:2018-12-24 11:13:30 【问题描述】:使用 Apollo-Server-Express,我想用 GraphQL 包装一个 REST API。我从免费使用 SWAPI(星球大战 API)开始。我找不到任何关于使用 apollo-server-express 使用光标分页进行服务器端获取的信息。我发现唯一可能的事情是 fetchMore,因为它是针对 Apollo 客户端的。任何帮助将不胜感激。这是我的代码:
schema.js
// Imports: GraphQL
import makeExecutableSchema from 'graphql-tools';
// Imports: GraphQL TypeDefs & Resolvers
import TYPEDEFS from './types.js';
import RESOLVERS from './resolvers.js';
// GraphQL: Schema
const SCHEMA = makeExecutableSchema(
typeDefs: TYPEDEFS,
resolvers: RESOLVERS
);
export default SCHEMA;
types.js
const TYPEDEFS = `
type Query
getFilm(id: ID): Film
getAllFilms: [Film]
type Film
title: String!
episode_id: Int!
opening_crawl: String
director: String
producer: String
release_date: String
characters: [Person]
planets: [Planet]
starships: [Starship]
vehicles: [Vehicle]
species: [Species]
created: String
edited: String
url: String
`
export default TYPEDEFS;
解析器.js
import fetch from 'node-fetch';
const RESOLVERS =
Query:
// Search for a Film by ID
getFilm: async (parent, args) =>
const response = await
fetch(`https://swapi.co/api/films/$args.id`);
return response.json();
,
getAllFilms: async (parent, args) =>
const response = await
fetch(`https://swapi.co/api/films/`);
return response.json();
;
export default RESOLVERS;
【问题讨论】:
【参考方案1】:我相信apollo-server
不提供开箱即用的光标分页。
您可以自己实现它。或者,您可以使用(或获得灵感)Relay 使用的那个。
根据Apollo client,如果您使用 Relay 样式的光标分页,客户端支持它。
【讨论】:
以上是关于使用 Apollo-Server-Express 从服务器中使用光标分页查询 REST API的主要内容,如果未能解决你的问题,请参考以下文章
使用 ApolloClient 和 Apollo-Server-Express 处理 GraphQL 错误
在 apollo-server-express 中增加身体限制大小
使用 apollo-server-express 迁移到 3.5.0