Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessing [Symbol(Response internals)] from JSON response

I'm using the library isomorphic-unfetch (https://www.npmjs.com/package/isomorphic-unfetch) to get JSON data from a Rest API. This is how I make the request:

    const res = await fetch(
      `url`
    );

To access the body I simply need to do

    const response = await res.json()

But how do I access the response headers? If I log the response to my server's console this is what I see:

Response {
  size: 0,
  timeout: 0,
  [Symbol(Body internals)]: {
    // stuff
  },
  [Symbol(Response internals)]: {
    url: 'request url',
    status: 200,
    statusText: 'OK',
    headers: Headers { [Symbol(map)]: [Object: null prototype] },
    counter: 0
  }
}

What's Symbol(Response internals)? And how do I access its headers property?

like image 629
Leonardo Petrucci Avatar asked Feb 25 '20 11:02

Leonardo Petrucci


Video Answer


2 Answers

To access its headers use one of the following:

const res = await fetch(url);
console.log(res.headers.get('content-type');
// or
res.headers.forEach(header => console.log(header));

https://github.github.io/fetch/#Headers

like image 200
Makoto Avatar answered Oct 14 '22 01:10

Makoto


When you run into a situation like this, you'll have access to those properties on the response object, so if you want to get access to the url property you'll simply have to write response.url and you'll get what you need.

fetch({someURL}, {
 method: "POST"
}).then((response) => response).then((result) => {return result.url});
like image 1
aedwards22 Avatar answered Oct 14 '22 01:10

aedwards22