Построение строки запроса таким способом подвержено ошибкам и опасно;он открывает вам множество ошибок и известных уязвимостей безопасности.(Что если newExamName
равно My "super-duper" exam!!!
?)
GraphQL предоставляет переменные в качестве лучшего подхода для передачи данных. В вашем случае, поскольку у вас есть сложный, несколько структурированный объект, это, вероятно,проще всего передать весь вход как один объект (возможны другие синтаксисы).Я ожидал бы, что это будет выглядеть примерно так:
const response = await strap.request('POST', '/graphql', {
data: {
query: `mutation CreateExam($input: CreateExamInput!) {
createExam(input: $input) {
exam { name, desription, time, questions }
}
}`,
variables: {
input: {
name: examInfo.newExamName,
desription: examInfo.newExamDescription,
time: Number(examInfo.newExamTime),
questions: [{gf: "hello"}],
subjects: [this.state.modalSubject._id]
}
}
}
});
Теперь клиентская библиотека HTTP может взять на себя ответственность за создание правильно сформированного JSON из вашего ввода, и вы не выполняете хитрые манипуляции со строками.