Graphql 批处理模式石墨烯响应状态为400“;批处理请求应收到一份列表;回应阿波罗的请求
React Apollo客户端(详情如下)对Graphene Django GraphQL服务器的GraphQL请求失败为Graphql 批处理模式石墨烯响应状态为400“;批处理请求应收到一份列表;回应阿波罗的请求,graphql,apollo,react-apollo,apollo-client,Graphql,Apollo,React Apollo,Apollo Client,React Apollo客户端(详情如下)对Graphene Django GraphQL服务器的GraphQL请求失败为状态代码400错误请求,并显示错误消息: Batch requests should receive a list, but received {... 为什么呢 设置 获取了一个GraphQL服务器(使用),该服务器具有正常运行的GraphiQL;比如说 query AllMsgsApp { allMessages { id mes
状态代码400错误请求
,并显示错误消息:
Batch requests should receive a list, but received {...
为什么呢
设置
获取了一个GraphQL服务器(使用),该服务器具有正常运行的GraphiQL;比如说
query AllMsgsApp {
allMessages {
id
message
}
}
将产生:
{
"data": {
"allMessages": [
{
"id": "TWVzc2FnZVR5cGU6MQ=="
"message": "Some message..."
}
]
}
}
前端是一个React应用程序(使用)和等
我在App.js
中的测试片段是:
import React, { Component } from 'react'
import { ApolloClient, InMemoryCache } from 'apollo-client-preset';
import { ApolloProvider } from 'react-apollo';
import { createHttpLink } from 'apollo-link-http';
import gql from 'graphql-tag'
const client = new ApolloClient({
link: createHttpLink({
uri: 'http://localhost:8000/gql/' }),
cache: new InMemoryCache(),
});
client.query({
query: gql`
query AllMsgsApp {
allMessages {
id
message
}
}
`
}).then(response => console.log(response.data.allMessages))
一旦纱线开始
,获得的响应为400错误请求
:
{"errors":[{"message":"Batch requests should receive a list, but received {'operationName': 'AllMsgsApp', 'variables': {}, 'query': 'query AllMsgsApp {
allMessages {
id
message
__typename
}
}
'}."}]}
依赖关系
"dependencies": {
"apollo-cache-inmemory": "^1.1.4",
"apollo-client": "^2.0.4",
"apollo-client-preset": "^1.0.5",
"apollo-link-http": "^1.3.1",
"graphql": "^0.12.0",
"graphql-tag": "^2.6.0",
"react": "^16.2.0",
"react-apollo": "^2.0.4",
"react-dom": "^16.2.0",
"react-router-dom": "^4.2.2",
"react-scripts": "1.0.17"
}
额外的
顺便说一下,以下是:
curl -X POST -H "Content-Type: application/json" -d '{"query": "{ allMessages { id, message } }"}' http://localhost:8000/gql
基本上返回相同的错误:
{"errors":[{"message":"Batch requests should receive a list, but received {'query': '{ allMessages { id, message } }'}."}]}
但是,这个将返回预期结果(请注意所附的[]
):
即:
[
{
"data":{
"allMessages":[
{
"id":"TWVzc2FnZVR5cGU6MQ==",
"message":"Some message..."
}
]
},
"id":null,
"status":200
}
]
不要使用
createHttpLink
而是使用较新的BatchHttpLink
像这样导入:
从“阿波罗链接批处理http”导入{BatchHttpLink}代码>
及
我希望这会有所帮助。这将发送来自Apollo的批处理请求,您希望从服务器获得这些请求
[
{
"data":{
"allMessages":[
{
"id":"TWVzc2FnZVR5cGU6MQ==",
"message":"Some message..."
}
]
},
"id":null,
"status":200
}
]
const client = new ApolloClient({
link: new BatchHttpLink({
uri: 'http://localhost:8000/gql/' }),
cache: new InMemoryCache(),
});