【问题标题】:How to add querystring to url via fetch (Web APIs)?如何通过获取(Web API)将查询字符串添加到 url?
【发布时间】:2016-03-24 16:07:05
【问题描述】:

这是我使用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) => {

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

我怎样才能用fetch 实现这个效果?

【问题讨论】:

  • fetch(`/_api/get_data?user_id=${userId}`, opts)

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


【解决方案1】:

我找到sample in spec

如果您想使用 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(/* … */)

所以,看来你应该传递给fetch刚刚生成的url,之后不能配置它。

对于构造查询,您可以使用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(/* … */);

【讨论】:

  • 谢谢。看起来superagent 更整洁。切换到fetch 有什么好处吗?
  • @AnthonyKong,据我了解,从 xmlhttprequest 获取的主要差异 fetch api 正在使用 promise api,所以如果你已经使用了一些库来实现它,你几乎找不到任何收获
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-04
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
  • 1970-01-01
  • 2019-04-02
相关资源
最近更新 更多