如何通过fetch(Web API)将查询字符串添加到url?

时间:2016-03-24 07:40:47

标签: javascript asp.net-web-api ecmascript-6 fetch

这是我的代码,使用superagent来调用服务器端端点

request     
  .get('/_api/get_data')    
  .query(`user_id=${userId}`)       
  .end((err, res) => {

这将发出对http://server/_api/get_data?user_i=112223

的调用

使用fetch,代码变为:

let payload = {
  user_id: userId,
}

let data = new FormData(payload)

let opts = {
  body: data,
  credentials: 'same-origin'
}

fetch('/_api/get_data', opts)
.then((res) => {

但是,使用这个新代码,查询字符串不会附加到网址。

如何使用fetch完成此效果?

1 个答案:

答案 0 :(得分:0)

我找到了sample in spec

如果您想使用网址查询参数:

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(/* … */)

所以,似乎你应该传递给fetch刚刚生成的url,并且之后无法配置它。

对于consctruct查询,您可以使用URLSearchParams

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