#javascript #graphql
#javascript #graphql
Вопрос:
Я пытаюсь загрузить файлы на сервер GraphQL, мой код выглядит следующим образом:
var query = "{ course(id: 1) { title } }"
const proxyurl = "https://cors-anywhere.herokuapp.com/";
const url = "http://server.com:3000/graphql";
var response = await fetch(proxyurl url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ query: query }),
})
var json = await response.json();
console.log(json.data.course.title);
Я не уверен, как перевести образец запроса CURL, который кто-то сделал в качестве примера:
curl -X POST
http://localhost:3001/graphql
-H 'Cache-Control: no-cache'
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW'
-F 'operations={"query":"mutation ($files: [Upload!]!) {multipleUpload(files: $files) {id filename encoding mimetype path __typename}}","variables":{}}'
-F 'map={"0":["variables.files.0"],"1":["variables.files.1"]}'
-F '"0"=@/Users/giautm/Devel/IMG_0636.JPG'
-F '"1"=@/Users/giautm/Devel/IMG_0637.JPG'
Редактировать:
Это мутация, которую я пытаюсь выполнить:
mutation identityValidation{
validateIdentity(identity:{
card_back:"", #must be an Upload scalar
card_front:"", #must be an Upload scalar
uniqueID:"" #string
}){
name,
status,
message
}
}
Спасибо!
Комментарии:
1. выполните поиск ‘отправить составные данные / форму с использованием XXX’
2. Функциональность загрузки файлов не является частью graphql, однако из запроса curl я могу сказать, что вы хотите загрузить файлы, используя многокомпонентный метод, было бы проще реализовать это с помощью клиента Apollo и сервера. В противном случае, пожалуйста, закодируйте изображения в формате base64 перед их отправкой, а затем расшифруйте на сервере, если ожидается, что файлы будут небольшими.
3. Не могли бы вы подтвердить, использует ли сервер Apollo или уже поддерживает загрузку файлов из нескольких частей?
4. Да, сервер использует Apollo, я также отредактировал вопрос, мутация получает входной параметр с 2 скалярами загрузки и 1 строкой
5. это не имеет значения… всегда сначала тестируйте API, используя, например, Postman … затем воссоздайте его с помощью fetch / axios / whatever, сравнивая тело запроса detaily с postman’s … начните с одного файла, вы найдете много примеров / руководств