使用替代 GraphQL 客户端连接到 Apollo Server
Posted
技术标签:
【中文标题】使用替代 GraphQL 客户端连接到 Apollo Server【英文标题】:Using an alternative GraphQL client to connect to Apollo Server 【发布时间】:2020-04-27 20:46:07 【问题描述】:是否可以使用非 Apollo 客户端(例如 graphql.js - https://github.com/f/graphql.js)连接到 Apollo GraphQL 服务器?
如果是这样,应该使用哪个端点?还是有其他方法?
这会失败并出现HTTP 500
服务器错误:
const graph = graphql('http://localhost:3013/graphql',
method: 'POST' // POST by default.
);
const res = graph(`query getQuestions
questions
id,
question
`);
res().
then((result) => console.log(result))
.catch((err) => console.log(err));
【问题讨论】:
【参考方案1】:当然,您可以使用任何 GraphQL 客户端,只要客户端遵循 GraphQL 规范即可。
例如
server.ts
:
import ApolloServer, gql from 'apollo-server';
import graphql from 'graphql.js';
const typeDefs = gql`
type Query
_: String
`;
const resolvers =
Query:
_: () => 'Hello',
,
;
const server = new ApolloServer(
typeDefs,
resolvers,
);
server.listen().then(async ( url ) =>
console.log(`Apollo server is listening on $urlgraphql`);
const graph = graphql(`$urlgraphql`, asJSON: true );
const helloQuery = graph(`
query
_
`);
const actual = await helloQuery();
console.log('actual: ', actual);
server.stop();
);
输出:
Apollo server is listening on http://localhost:4000/graphql
actual: _: 'Hello'
【讨论】:
我缺少的部分是: asJSON: true
如果我补充说它工作正常。我正在使用 CDN 链接 - 出于遗留原因。目前尚不清楚asJSON
设置的作用。以上是关于使用替代 GraphQL 客户端连接到 Apollo Server的主要内容,如果未能解决你的问题,请参考以下文章
Apollo 客户端无法连接到 GraphQL 服务器(http 调用执行失败)
将 Strapi 连接到 NextJS/Apollo 客户端 GraphQL - 未提供所需类型“XXX”的变量“$input”
如何使用另一种编程语言连接到 apollo graphql-websocket?