似乎没有输入就不能发出 PATCH 或 POST 请求?
错误: Error: [GraphQL mutation using a REST call without a body]. No
输入was detected. Pass bodyKey, or bodyBuilder to the @rest() directive to resolve this.
突变:
mutation extendTrial($orgSlug: String!) {
extendTrialResult(orgSlug: $orgSlug) @rest(
type: "Org",
path: "/orgs/{args.orgSlug}/extend_trial/",
method: "PATCH",
bodySerializer: "text"
)
}
阿波罗选项:
bodySerializers: {
text: (data, headers) => {
headers.set('Content-Type', 'text/plain');
return { body: data, headers };
}
}
我认为你可以这样做:
mutation extendTrial($orgSlug: String!) {
extendTrialResult(orgSlug: $orgSlug, input: null) @rest(
type: "Org",
path: "/orgs/{args.orgSlug}/extend_trial/",
method: "PATCH",
bodySerializer: "text"
)
}
实际上对我来说input: null
不起作用,但这有效:
mutation extendTrial($orgSlug: String!) {
extendTrialResult(orgSlug: $orgSlug, input: {}) @rest(
type: "Org",
path: "/orgs/{args.orgSlug}/extend_trial/",
method: "PATCH",
bodySerializer: "text"
)
}
这在客观上不是很可怕吗? 现在有办法解决这个问题吗? 文档说:
发出 POST 或 PUT HTTP 请求时,通常需要提供请求正文。 按照惯例,GraphQL 建议您将输入类型命名为输入,因此默认情况下,我们将在此处为您的身体查找 JSON 对象。
这听起来是不是好像我们意识到您并不总是需要身体的事实?
作为那条文档的作者,是的,我知道。 对于我的用例来说,这并不是那么高的优先级。
@d9001如果您查看@Laruxo 的解决方法,您会发现您需要做的就是添加几个字母来绕过此约束。 如果您想为此功能贡献代码,我很乐意帮助审核。
是的,并不是我无法让它发挥作用。 它只是让我发疯,弄清楚问题是什么,解决方案有点像我的拉取请求中提到的那样,每个人都告诉我删除未使用的对象:|
我会看看删除这个要求需要什么。
最有用的评论
实际上对我来说
input: null
不起作用,但这有效: