Как мы отправляем массив в x- www-form-urlencoded в реагировать на родной - PullRequest
0 голосов
/ 20 января 2020

это функция для отправки 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 ("data ====", data)

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 Ответ

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

Нет стандартного способа кодирования массива в 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);
...