我不确定我在这里做错了什么?我现在已经被困在让我的突变在我的无服务器设置中使用我的apollo-server-lambda运行上一段时间了,当我尝试运行这样的查询时,我的查询工作正常:
{ "mutation": "{ signIn(username: \"SomeUser\", password: \"SomePassword\" ) { token } }" }
我刚刚收到消息:“必须提供查询字符串。”状态400。
我设置了如下解析程序:
const resolvers = {
Query: {
users: async (_, args, ctx) => User.load(args, ctx)
},
Mutation: {
signIn: async (_, { username, password }, ctx) => Auth.signIn({ username, password }, ctx)
}
};
对于额外的信息,这里是我的typeDefs:
const typeDefs = gql`
type User {
id: ID!,
firstname: String,
lastname: String,
username: String,
createdAt: String,
role: String
}
type AuthToken {
token: String
}
type Query {
hello: String,
users(id: Int): [User]
}
type Mutation {
signIn(username: String!, password: String!): AuthToken!
}
`;
我正在使用postman测试我的graphqlendpoint,我的内容类型是application/json
我不知道这里是否有人能告诉我我做错了什么,我尝试将其全部移动到查询解析器,它可以用“查询”替换“突变”,但在这里使用“查询”对我来说没有意义,我猜稍后我真的想使用突变来突变数据时,我无论如何都需要这个来工作?
谁能告诉我我哪里错了吗?
编辑
我安装了:graphql游乐场中间件lambda,并使用以下工具设置了无服务器设置:https://github.com/prisma/graphql-playground#as-无服务器处理程序,如果我使用Graphiql,它会按预期工作,但我仍然感兴趣的是,是否有人知道我通过postman发送的json有什么问题?
发送请求时,请求主体应该是格式正确的JSON对象,带有查询
属性(如果包含变量,还可以选择变量
属性):
{
"query": "<GraphQL Document>",
"variables {},
}
无论操作本身是查询
还是突变
,情况都是如此。
上述查询属性的实际值必须是语法正确的文档,如GraphQL规范所述。文档通常由单个操作定义(查询或变异)组成,其中包括该操作的所有请求字段。如果使用任何片段,文档还将包括片段。
操作定义如下所示:
OperationType [Name] [VariableDefinitions] [Directives] SelectionSet
所以你可以有这样的文档:
mutation SomeMutation {
signIn(username: "SomeUser", password: "SomePassword") {
token
}
}
在这里,操作的类型是transation
,名称是某个突变
,最外层的花括号集之间的所有内容都是选择集。如果您有任何变量,它们的类型将在选择集之前的括号中声明。
操作名称是可选的,但为了在后端进行调试,可以将其包含在内。从技术上讲,操作类型也可以省略,在这种情况下,GraphQL只是假设该类型是一个查询。例如,这仍然是一个有效的文档:
{
users {
id
}
}
并且相当于
query SomeName {
users {
id
}
}
前者称为查询速记。显然,这不能用于突变,因此突变必须始终显式地说明其操作类型。完整示例:
{
"query": "mutation SomeName ($username: String!, $password: String!) { signIn(username: $username, password: $password) { token } }",
"variables {
"username": "SomeUser",
"password": "SomePassword"
},
}
我想它一定是在请求体。我如何发送‘更新’查询或我做错了?
我想它一定在请求的身体里。我如何发送“更新”查询或我做错了?
除了查询之外,两者的提取看起来完全相同: 第一个查询返回: 但第二个查询返回错误: 但我得到了同样的错误
如何为GraphQL编写单元测试?我正在使用apollo服务器、graphql-tester和graphql。
我正在学习Apollo和graphQL,并将其集成到我的一个项目中。到目前为止一切正常,但现在我正在尝试一些突变,我正在努力处理输入类型和查询类型。我觉得事情比实际情况要复杂得多,因此我正在寻求如何处理我的情况的建议。我在网上找到的示例都是非常基本的模式,但现实总是更加复杂,因为我的模式非常大,如下所示(我只复制一部分): 然后定义输入和负载,依此类推... 为此,我需要一个变异来保存“计算”,因
我使用如下所示的导出来服务我的模型: 然后,我发出以下POST请求(原始正文): {“错误”:“您必须用dtype float\n\t[[节点:Placeholder_1=placeholder_output_shapes=[],dtype=dt_float,shape=,_device=\”/job:localhost/replica:0/task:0/device:cpu:0\“]]为占位符张