Сложный FormData в реакции родной - PullRequest
0 голосов
/ 27 января 2020

Что мне нужно сделать:
- POST form-data в react-native с использованием fetch API запроса.

Формы данных приведены в следующем формате. Он включает в себя простую строку, сложный объект, простой массив и сложный массив и файл в одном вызове API.

Обратите внимание, что это API, предоставляемый сторонним поставщиком, и я не могу его изменить. Нет, он не принимает формат application/json.

Примечание: Чистый react-native app. EXPO не поддерживается. **.

enter image description here

У меня есть следующие данные. Как я могу сериализовать эти данные в форму совместимых данных?

let data = {
    string: "1",
    object: {
        a: 3,
        b: {
            c: 5
        }
    },
    array: [1,2,3],
    arrayComplex: [{id: 2, value: 2}, {id:3, value:3}],
    file: {
        name: 'Image.jpg',
        type: 'image/jpeg',
        uri: filePath,
    }
}

1 Ответ

0 голосов
/ 27 января 2020

FormData поддерживает простую пару ключ / значение, она не поддерживает вложенные данные как объекты из значений, поэтому вы должны преобразовать свои JSON части в строки:

let data = {
    string: "1",
    object: {
        a: 3,
        b: {
            c: 5
        }
    },
    array: [1,2,3],
    arrayComplex: [{id: 2, value: 2}, {id:3, value:3}],
    file: {
        name: 'Image.jpg',
        type: 'image/jpeg',
        uri: filePath,
    }
}
i.e.:
let FormDataReq = new FormData();

FormDataReq.append('arrayComplex', JSON.stringify(data.arrayComplex));

И затем отправить свои данные FormData как часть запроса body:

fetch('https://url-to-api-endpoint.com', {
  method: 'POST',
  body: FormDataReq,
}).then((response) => response.json())
.then((result) => {
  console.log('Success:', result);
})
.catch((error) => {
  console.error('Error:', error);
});
...