Estoy usando el siguiente código:
const GQL_ADD_JOB = gql` mutation AddJob { addJob(title: $title, company: $company, description: $description) { title company description } } `; Y luego, usando axios, intento POST usando la función de print de GraphQL:
request.post( GQL_ENDPOINT, { query: print(GQL_ADD_JOB), variables: { title: job.title, company: job.company, description: job.description, }, } ) Donde job.title , job.company y job.description pueden ser cadenas que contengan cualquier carácter, incluidas líneas nuevas, comillas, etc. Sin embargo, llamar a esto da como resultado un error de análisis JSON. El error muestra que la solicitud envió los siguientes datos:
'{"consulta":"mutación AddJob {\n addJob(título: $título, empresa: $empresa, descripción: $descripción) {\n título\n empresa\n descripción\n }\n}","variables" :{"title":"Representante de Ventas de Servicio de Ruta - 3er Turno","company":"Cintas","description":"test desc"}}'
Cuando uso estos datos y realizo manualmente un POST a través de curl, aparece el siguiente error:
{"mensaje":"Error de sintaxis: No se puede analizar el carácter inesperado "\\".","extensiones":{"código":"GRAPHQL_PARSE_FAILED","exception":{"stacktrace":["GraphQLError: Error de sintaxis: No se puede analizar el carácter inesperado "\\"."," en syntaxError (/home/user/repos/comp/node_modules/graphql/error/syntaxError.js:15:10)"," en readToken (/home/user/ repos/comp/node_modules/graphql/language/lexer.js:360:40)”, en Lexer.lookahead (/home/user/repos/comp/node_modules/graphql/language/lexer.js:75:108)” "," en Lexer.advance (/home/user/repos/comp/node_modules/graphql/language/lexer.js:58:35)"," en Parser.expectToken (/home/user/repos/comp/node_modules/graphql /language/parser.js:1408:19)"," en Parser.many (/home/user/repos/comp/node_modules/graphql/language/parser.js:1519:10)"," en Parser.parseSelectionSet ( /home/user/repos/comp/node_modules/graphql/language/parser.js:271:24)"," en Parser.parseOperationDefinition (/home/user/repos/comp/node_modules/graphql/language/parser.js: 199:26)"," en Parser.parseDefinition ( /home/user/repos/comp/node_modules/graphql/language/parser.js:137:23)"," en Parser.many (/home/user/repos/comp/node_modules/graphql/language/parser.js: 1523:26)"]}}}
Cambié mi mutación a esto y ahora funciona. Todavía no entiendo completamente por qué el otro formato no funcionó.
mutation AddJob($title: String!, $company: String!, $description: String!) { addJob(title: $title, company: $company, description: $description) }