【发布时间】:2022-02-12 03:28:48
【问题描述】:
我正在使用以下代码:
const GQL_ADD_JOB = gql`
mutation AddJob {
addJob(title: $title, company: $company, description: $description) {
title
company
description
}
}
`;
然后使用 axios,我尝试使用 GraphQL 的 print 函数进行 POST:
request.post(
GQL_ENDPOINT,
{
query: print(GQL_ADD_JOB),
variables: {
title: job.title,
company: job.company,
description: job.description,
},
}
)
其中job.title、job.company 和job.description 都可以是包含任何字符的字符串,包括换行符、引号等。但是,调用它会导致 JSON 解析错误。报错说明请求发送了以下数据:
'{"query":"mutation AddJob {\n addJob(title: $title, company: $company, description: $description) {\n title\n company\n description\n }\n}", "variables":{"title":"Route Service Sales Representative - 3rd Shift","company":"Cintas","description":"test desc"}}'
当我使用这些数据并通过 curl 手动执行 POST 时,我收到以下错误:
{"message":"语法错误:无法解析意外字符 "\\"。","extensions":{"code":"GRAPHQL_PARSE_FAILED","exception":{"stacktrace":["GraphQLError:语法错误:无法解析意外字符 "\\"."," at syntaxError (/home/user/repos/comp/node_modules/graphql/error/syntaxError.js:15:10)"," at readToken (/home /user/repos/comp/node_modules/graphql/language/lexer.js:360:40)””,位于 Lexer.lookahead (/home/user/repos/comp/node_modules/graphql/language/lexer.js:75: 108)"," 在 Lexer.advance (/home/user/repos/comp/node_modules/graphql/language/lexer.js:58:35)"," 在 Parser.expectToken (/home/user/repos/comp/ node_modules/graphql/language/parser.js:1408:19)"," 在 Parser.many (/home/user/repos/comp/node_modules/graphql/language/parser.js:1519:10)"," 在 Parser .parseSelectionSet (/home/user/repos/comp/node_modules/graphql/language/parser.js:271:24)"," 在 Parser.parseOperationDefinition (/home/user/repos/comp/node_modules/graphql/language/parser .js:199:26)","在 Parser.parseDefinition (/home/user/repos/comp/node_modules/graphql/language/parser.js:137:23)"," 在 Parser.many (/home/user/repos/comp/node_modules/graphql/language /parser.js:1523:26)"]}}}
【问题讨论】:
-
所以问题不是
request.post调用,而是后端不喜欢这个请求?你拥有这个api,你能分享它的代码或在服务器端调试吗?
标签: javascript axios graphql