【问题标题】:How to convert from get.JSON to fetch如何从 get.JSON 转换为 fetch
【发布时间】:2018-08-15 03:37:58
【问题描述】:

我使用 get.JSON 可以正常工作,但是当我尝试使用 fetch API 时,它给了我错误“必需参数:部分”

export const fetchYoutube = () => {
  return dispatch => {
    fetchAsync()
    .then(data => console.log(data))
    .catch(reason => console.log(reason.message))

    dispatch({
      type: INCREMENT
    })
  }
}
async function fetchAsync () {
  var query = {
        part: 'snippet',
        key: 'AIzaSyA3IHL73MF00WFjgxdwzg57nI1CwW4dybQ',
        maxResults: 6,
        type: 'video',
        q: 'music'
    }
  let response = await fetch('https://www.googleapis.com/youtube/v3/search', {
    data : query,
    method: 'GET'
  });
  let data = await response.json();
  return data;
}

如何使用 fetch API 传递查询对象?

【问题讨论】:

    标签: query-string getjson fetch-api query-parameters


    【解决方案1】:

    尝试将查询作为参数附加:

    替换:

    let response = await fetch('https://www.googleapis.com/youtube/v3/search', {
      data : query,
      method: 'GET'
    });
    

    与:

    var url = new URL("https://www.googleapis.com/youtube/v3/search"),
        query = {
            part: 'snippet',
            key: '#####################################',
            maxResults: 6,
            type: 'video',
            q: 'music'
        }
        Object.keys(query).forEach(key => url.searchParams.append(key, query[key]))
    
    let response = await fetch(url)
    

    Setting query string using Fetch GET request

    【讨论】:

    • 这是正确的答案,因为 fetch API 在设计上没有内置的便利机制来获取 params 对象并将查询字符串从中添加到请求中。但还要注意,如果您不想依赖 url.searchParams(所有主流浏览器的当前版本都支持,但 Edge 17 之前的 Edge 不支持,IE 完全不支持),请参阅stackoverflow.com/questions/316781/…不依赖 url.searchParams.
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 2019-06-24
    • 2016-09-02
    • 2021-02-20
    • 2018-06-13
    • 2016-10-24
    • 2019-11-12
    • 2021-03-31
    相关资源
    最近更新 更多