Search code examples
getjsonfetch-apiquery-string

How to convert from get.JSON to fetch


I have this working fine with get.JSON but when I try and use the fetch API instead, it gives me the error "Required parameter: part".

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;
}

How do I pass the query object using the fetch API?


Solution

  • Try attaching the query as params:

    replace:

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

    with:

    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