285

新しいFetch APIを使用しようとしています:

私は次のGETようなリクエストをしています。

var request = new Request({
  url: 'http://myapi.com/orders',
  method: 'GET'
});
fetch(request);

GETただし、リクエストにクエリ文字列を追加する方法がわかりません。理想的には、次のようなGETリクエストを作成できるようにしたいと考えています。URL

'http://myapi.com/orders?order_id=1'

のパラメータとしてjQuery渡すことでこれを行うことができました。new でそれを行う同等の方法はありますか?{order_id: 1}data$.ajax()Fetch API

4

12 に答える 12

302

2017 年 3 月の更新:

URL.searchParams のサポートは Chrome 51 で正式に導入されましたが、他のブラウザーでは引き続きpolyfillが必要です。


クエリ パラメータを操作する公式の方法は、単に URL に追加することです。仕様から、これは例です:

var url = new URL("https://geo.example.org/api"),
    params = {lat:35.696233, long:139.570431}
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]))
fetch(url).then(/* … */)

searchParamsただし、 (執筆時点で) Chrome が URL のプロパティをサポートしているかどうかはわからないため、サードパーティのライブラリを使用するか、独自のソリューションを使用することをお勧めします。

2018 年 4 月の更新:

URLSearchParams コンストラクターを使用するとurl.search、すべてのキーをループして追加する代わりに、2D 配列またはオブジェクトを割り当てて、それをに割り当てることができます。

var url = new URL('https://sl.se')

var params = {lat:35.696233, long:139.570431} // or:
var params = [['lat', '35.696233'], ['long', '139.570431']]

url.search = new URLSearchParams(params).toString();

fetch(url)

補足: URLSearchParamsNodeJS でも利用できます

const { URL, URLSearchParams } = require('url');
于 2016-01-27T13:50:45.443 に答える
6

私はこれが絶対に明白なことを述べていることを知っていますが、これが最も単純であるため、これを答えとして追加する価値があると感じています:

const orderId = 1;
fetch('http://myapi.com/orders?order_id=' + orderId);
于 2017-04-19T02:35:15.480 に答える
2

ここでは、テンプレート リテラルも有効なオプションであり、いくつかの利点があります。

生の文字列、数値、ブール値などを含めることができます。

    let request = new Request(`https://example.com/?name=${'Patrick'}&number=${1}`);

変数を含めることができます:

    let request = new Request(`https://example.com/?name=${nameParam}`);

ロジックと関数を含めることができます:

    let request = new Request(`https://example.com/?name=${nameParam !== undefined ? nameParam : getDefaultName() }`);

より大きなクエリ文字列のデータを構造化する限り、文字列に連結された配列を使用するのが好きです。他のいくつかの方法よりも理解しやすいと思います。

let queryString = [
  `param1=${getParam(1)}`,
  `param2=${getParam(2)}`,
  `param3=${getParam(3)}`,
].join('&');

let request = new Request(`https://example.com/?${queryString}`, {
  method: 'GET'
});
于 2017-09-29T20:07:50.357 に答える
-6

var paramsdate=01+'%s'+12+'%s'+2012+'%s';

request.get(" https://www.exampleurl.com?fromDate= "+paramsDate;

于 2020-01-31T12:29:42.293 に答える