Как отправить массив в формате x-www-form-urlencoded в react-native
Это функция для отправки API
export const socialPostMurmur= (publicKey,content,sig,visibility,video,photo)=>{
// console.log(publicKey,content,sig,visibility,video,photo);
console.log('photo',photo);
let data;
data="pub=" + publicKey.toString() +
"&content=" + content +
"&sig=" + sig.sig +
"&visibility=" + visibility +
"&videos=[]" +
"&photos=" + photo
console.log("data====",data)
fetch('https://murmurjapi.wandx.co/accounts/postMurmur', {
method: 'POST',
headers: new Headers({
"Content-Type": "application/x-www-form-urlencoded", // <-- Specifying the Content-Type
Accept: "application/json"
}),
body:data
}).then((response) => response.json())
.then((responseJson) => {
console.log("New post is called",responseJson);
// return responseJson.movies;
})
.catch((error) => {
console.error('this is error',error);
});
}
здесь фото и видео в аргументе функции - массив. Итак, когда я делаю console.log('photo',photo); Я получаю правильный массив вроде этого:
["QmYTLjw3dzwNVzhMZGVdbZwbt7KTfc51exCWXeTKsy2bff-image-jpg-general"]
но когда я отправляю данные в API и распечатываю их. он не показывает его как массив, а в ответ на вызов API я получаю статус не удалось err null.
вот как массив печатается в API:
photos = QmYTLjw3dzwNVzhMZGVdbZwbt7KTfc51exCWXeTKsy2bff-image-jpg-general
это мои данные, которые поступают в API
console.log("данные ====", данные)
pub=EOS7qoTnhdcdihvcvEBkqNJ21iNwFJURRvgciHCuG2ihsvPZyPdL4&content=H&sig=SIG_K1_JwaNudk7P6AeogY9LSKey7hTwSTYM9E1GsLF3twRgqap6zCFVY78PzZgF1yA6GUTdDuC4vNXo1vUgwFCFKHppsyHc1zGVb&visibility=1&videos=[]&photos=QmYTLjw3dzwNVzhMZGVdbZwbt7KTfc51exCWXeTKsy2bff-image-jpg-general
это ответ, который я получаю после вызова API
New post is called
{status: false, err: {…}}
status: false
err: {}
__proto__: Object
1 ответ
Там нет стандартного способа кодирования массива вapplication/x-www-form-urlencoded
. Распространенным расширением (которое поддерживается PHP (изначально) и body-parser (в расширенном режиме)) является суффикс имени с[]
и повторите это для каждого значения в массиве.
т.е.
const animals = ["dog", "cat", "mouse"];
const field_name = "animal[]";
const url_encoded_animals = animals.map(
value =>
`${encodeURIComponent(field_name)}=${encodeURIComponent(value)}`
);
const form_encoded = url_encoded_animals.join("&");
console.log(form_encoded);