1

次のコードは、フェッチ ポリフィルを使用して HTTP POST リクエストを作成するものです。

fetch(url, {
  method: 'post',
  body: JSON.stringify({
    token: this.state.token,
  }),
})
  .then((response) => response.json())
  .then((responseData) => {
    console.log(responseData);
  })
  .done();

このリクエストは、文字列化された JSON obj としてデータを送信します。リクエストと同様にキーと値のペアとしてデータを送信する方法はありますか? post(URL, data=payload) in Python.

4

2 に答える 2

8

クエリ文字列と同じ形式が必要なように聞こえるので、https://www.npmjs.com/package/query-stringのようなパッケージをインポート/要求します。これは、ブラウザの機能に依存していないようで、stringify メソッドがあります。

queryString.stringify({
  foo: 'bar',
  nested: JSON.stringify({
    unicorn: 'cake',
  }),
});

//=> foo=bar&nested=%7B%22unicorn%22%3A%22cake%22%7D

または、ソースコードの関連部分を使用することもできますが、これには引き続きライセンスが適用されます。

function toQueryString(obj) {
  return obj
    ? Object.keys(obj)
        .sort()
        .map(function (key) {
          var val = obj[key];

          if (Array.isArray(val)) {
            return val
              .sort()
              .map(function (val2) {
                return encodeURIComponent(key) + '=' + encodeURIComponent(val2);
              })
              .join('&');
          }

          return encodeURIComponent(key) + '=' + encodeURIComponent(val);
        })
        .join('&')
    : '';
}

bodyその後、次のパラメータで戻り値を使用できますfetch

fetch(url, {
  method: 'post',
  body: toQueryString({ token: this.state.token }),
});
于 2015-07-03T13:59:52.873 に答える