Какой тип машинописного текста использовать для тела массива с fetch? - PullRequest
0 голосов
/ 05 октября 2018

Я использую fetch для публикации некоторых данных формы в кодировке url, например так:

private buy = async () => {
    const { nonce } = await this.state.instance.requestPaymentMethod();

    const formBody = [];
    formBody.push(`${encodeURIComponent("paymentMethodNonce")}=${encodeURIComponent(nonce)}`);

    // @ts-ignore
    const response = await fetch(`http://localhost:4000/checkout`, {
        method: "post",
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
        },
        body: formBody,
    });
}

Он отлично работает с игнором, но какой тип я должен использовать в этом случае, чтобы я мог удалить игнор?

1 Ответ

0 голосов
/ 05 октября 2018

API fetch является частью DOM API и определяется как часть lib.dom.d.ts.
В соответствии с этим определением тип body определяется как:

type BodyInit = Blob | BufferSource | FormData | URLSearchParams | ReadableStream | string;

Таким образом, для запроса с типом контента application/x-www-form-urlencoded вы можете использовать URLSearchParams как body тип:

private buy = async () => {
  const { nonce } = await this.state.instance.requestPaymentMethod();

  const formBody = new URLSearchParams();
  formBody.append('paymentMethodNonce', nonce);

  const response = await fetch(`http://localhost:4000/checkout`, {
    method: "post",
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
    },
    body: formBody,
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...