GET with query string with Fetch in React Native

前端 未结 7 1701
情话喂你
情话喂你 2020-12-29 01:51

I am making a request like this:

fetch(\"https://api.parse.com/1/users\", {
  method: \"GET\",
  headers: headers,   
  body: body
})

How d

相关标签:
7条回答
  • 2020-12-29 02:21

    Short answer

    Just substitute values into the URL like this:

    const encodedValue = encodeURIComponent(someVariable);
    fetch(`https://example.com/foo?bar=${encodedValue}`);
    

    Longer answer

    Yes, you just need to add the query string to the URL yourself. You should take care to escape your query string parameters, though - don't just construct a URL like

    `https://example.com/foo?bar=${someVariable}`
    

    unless you're confident that someVariable definitely doesn't contain any &, =, or other special characters.

    If you were using fetch outside of React Native, you'd have the option of encoding query string parameters using URLSearchParams. However, React Native does not support URLSearchParams. Instead, use encodeURIComponent.

    For example:

    const encodedValue = encodeURIComponent(someVariable);
    fetch(`https://example.com/foo?bar=${encodedValue}`);
    

    If you want to serialise an object of keys and values into a query string, you could make a utility function to do that:

    function objToQueryString(obj) {
      const keyValuePairs = [];
      for (const key in obj) {
        keyValuePairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]));
      }
      return keyValuePairs.join('&');
    }
    

    ... and use it like this:

    const queryString = objToQueryString({
        key1: 'somevalue',
        key2: someVariable,
    });
    fetch(`https://example.com/foo?${queryString}`);
    
    0 讨论(0)
提交回复
热议问题