我正在使用Apollo-client而且我不明白为什么这么难调试我的错误:我正在尝试对我的石墨烯python实现GraphQL执行mutate调用.最终得到400错误代码,我无法检索信息.
例如:当我在/ graphQL接口上尝试我的石墨烯服务时,它会将有用的错误作为错误输入或错误的方法名称返回给我.在这里,在apollo客户端,它只给我一个400代码错误.这对我没有任何帮助.那么有可能从我的apolo客户端获取石墨烯的错误信息,而不是无用的400代码错误吗?
这是一个例子,来自我的石墨烯界面(/ graphQL):
mutation myMutation {
uploadFile(input:"") {
success
}
}
Run Code Online (Sandbox Code Playgroud)
将输出:
{
"errors": [
{
"message": "Argument \"input\" has invalid value \"\".\nExpected \"UploadFileMutationInput\", found not an object.",
"locations": [
{
"column": 20,
"line": 2
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
当我在apollo客户端(js)上尝试相同时:
client.mutate({
mutation: gql`
mutation($file: Upload!) {
uploadFile(input: $file) {
success
}
}
`,
variables: { file } })
.then(console.log)
.catch((e) => { console.log("catch", e) })
Run Code Online (Sandbox Code Playgroud)
我明白了
Error: Network error: Response not successful: Received status code 400
我的捕获从未被调用过,文档根本没有帮助我. …
我有一个 Apollo GraphQL 服务器,我有一个删除记录的突变。此更改接收资源的 UUID,调用 REST(Ruby on Rails)API,当删除成功时,该 API 仅返回成功的 HTTP 代码和空正文(204 无内容)以及带有错误的 HTTP 错误代码删除不起作用时的消息(404 或 500,典型的 REST 删除端点)。
在定义 GraphQL 突变时,我必须定义突变返回类型。突变返回类型应该是什么?
input QueueInput {
"The queue uuid"
uuid: String!
}
deleteQueue(input: QueueInput!): ????????
Run Code Online (Sandbox Code Playgroud)
我可以使它与几种不同类型的返回(布尔值、字符串等)一起工作,但我想知道什么是最佳实践,因为我尝试过的返回类型都没有感觉是正确的。我认为重要的是,在调用突变后,在客户端我有一些关于如果事情进展顺利(API 返回 204 不是内容)或如果发生一些错误(API 返回 404 或 500)发生了什么的信息,并且最好有一些关于错误。
我一直在浏览Github V4 API文档,我似乎无法找到查询年度总贡献的方法(如github配置文件中所示).有没有人设法使用新API从您的个人资料中获取一些统计信息?
我在github上使用graphQL和个人访问令牌,并设法获得最小的用户配置文件数据; 用户名,档案名称等
我正在使用apollo-client
库来查询来自我的Graphql
服务器的数据.一些查询通过apollo轮询能力每隔5秒发送到服务器.
有一种通用的方法可以为从我的客户端轮询发送的所有请求添加自定义标头吗?
谢谢你的帮助 :)
我完全陷入了阿波罗问题,为此我打开了一个GitHub问题并且没有响应.
我正在使用阿波罗变种optimisticResponse
.根据我的理解,它应该工作的方式是update()
两次调用:首先使用乐观数据,然后再使用来自网络的实际数据.
但由于某种原因,我的代码不是这样的.我接到两个update()
电话,都有乐观的数据.
这是一个演示此行为的回购:https://github.com/ffxsam/apollo-update-bug
我正在使用Apollo Client作为前端,使用Graphcool作为后端.有两个查询firstQuery
和secondQuery
我希望他们在序列页面打开时调用.下面是示例代码(此处未列出TestPage组件的定义):
export default compose(
graphql(firstQuery, {
name: 'firstQuery'
}),
graphql(secondQuery, {
name: 'secondQuery' ,
options: (ownProps) => ({
variables: {
var1: *getValueFromFirstQuery*
}
})
})
)(withRouter(TestPage))
Run Code Online (Sandbox Code Playgroud)
我需要var1
在secondQuery
从的结果firstQuery
.我如何使用Apollo Client和编写?或者还有其他方法吗?提前致谢.
像这样的 graphql 架构:
type User {
id: ID!
location: Location
}
type Location {
id: ID!
user: User
}
Run Code Online (Sandbox Code Playgroud)
现在,客户端发送一个graphql
查询。理论上,User
和Location
可以无限循环引用对方。
我认为这是一种反模式。据我所知,没有中间件或方法可以限制查询的嵌套深度graphql
和apollo
社区。
这种无限嵌套深度查询会为我的系统消耗大量资源,例如带宽、硬件、性能。不仅是服务器端,还有客户端。
所以,如果graphql模式允许循环引用,应该有一些中间件或方法来限制查询的嵌套深度。或者,为查询添加一些约束。
也许不允许循环引用是一个更好的主意?
我更喜欢发送另一个查询并在一个查询中执行多个操作。这要简单得多。
更新
我找到了这个库:https : //github.com/slicknode/graphql-query-complexity。如果 graphql 不限制循环引用。该库可以保护您的应用程序免受资源耗尽和 DoS 攻击。
当所有请求都具有相同的 URL 时,如何在开发工具网络选项卡中区分 GraphQL 请求?
我的所有请求的目标都是/api/graphql
为了区分它们,我需要单击每个请求,切换到“标头”选项卡,向下滚动到“请求有效负载”部分并阅读查询。这意味着我几乎无法对请求进行概览,因此我必须单击多个请求才能找到我想要检查的请求。
人们如何解决这个问题?
我在 SSR 应用程序的初始加载时收到此错误:Warning: Text content did not match. Server: "SOME DATA" Client: "Loading..."
如何在不将loading
标志设置为 true 的情况下初始化应用程序的
客户端?
我正在使用 react、express 和 apollo 设置 SSR。我从渲染器服务器获得了一个正确渲染的 HTML 数据,但是当客户端包加载时,它试图重新获取数据。Hydration 已设置,并且来自渲染器服务器的所有数据都被注入到页面的 HTML 中。
/index.js
<Query query={GET_USERS} variables={queryVariables}>
{({
loading,
error,
data
}) => {
if (loading) return <p>Loading...</p>;
if (error) return `Error: ${error}`;
return data.users.map(user => <p key={user.id}>{user.login}</p>);
}}
</Query>
Run Code Online (Sandbox Code Playgroud)
/renderer.js
export default async (req, client) => {
const serverSideApp = (
<ApolloProvider client={client}>
<StaticRouter location={req.path} context={{}}>
<div>{renderRoutes(RoutesList)}</div>
</StaticRouter>
</ApolloProvider>
);
return …
Run Code Online (Sandbox Code Playgroud) 我目前正在使用单独的.graphql
文件加载 GraphQL 模式,但它封装在字符串中:
schema.graphql
const schema = `
type CourseType {
_id: String!
name: String!
}
type Query {
courseType(_id: String): CourseType
courseTypes: [CourseType]!
}
`
module.exports = schema
Run Code Online (Sandbox Code Playgroud)
然后将其用于apollo-server
:
index.js
const schema = `
type CourseType {
_id: String!
name: String!
}
type Query {
courseType(_id: String): CourseType
courseTypes: [CourseType]!
}
`
module.exports = schema
Run Code Online (Sandbox Code Playgroud)
有没有办法简单地加载一个看起来像这样的 .graphql ?
schema.graphql
type CourseType {
_id: String!
name: String!
}
type Query {
courseType(_id: String): CourseType
courseTypes: [CourseType]! …
Run Code Online (Sandbox Code Playgroud) apollo ×10
graphql ×10
javascript ×2
react-apollo ×2
api ×1
aws-appsync ×1
debugging ×1
github ×1
github-api ×1
graphcool ×1
graphql-js ×1
node.js ×1
reactjs ×1
rest ×1
vue-apollo ×1
vue.js ×1