gpt4 book ai didi

reactjs - 如何在一个 block 中获取响应正文和响应 header

转载 作者:行者123 更新时间:2023-12-03 14:07:28 26 4
gpt4 key购买 nike

我是 react 原生的新手,我正在向服务器发送请求,并希望在同一 block 中获取响应和正文,以便我可以将这两个项目发送到其他函数,我的获取方法如下所示

send_request = (data) =>{
url = BASE_URL + "some/url.json"
fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
user: {
email: data.email,
full_name: data.name,
}
})
}).then((response) => {
//how can I get response body here so that I can call following method
// this.use_response(responsebody, response.headers)
return response.json()
}).then((responseJson) => {
// or how can I get response headers here so that I can call following fuction
// this.use_response(responseJson, headers)
return responseJson
}).catch((error) => {
console.log(error)
});
}

我怎样才能同时使用两者,请帮忙提前谢谢!

最佳答案

response.headers 是一个可用的对象,而 request.json() 是一个需要解析的 Promise。

为了将它们放在一个地方,使用简单的 ES6 Promise,应该有嵌套的 then:

  ...
.then((response) => {
return response.json().then(responseJson => {
this.use_response(responseJson, response.headers)
});
})

或者多个值应该作为数组或对象通过链一起传递:

  ...
.then((response) => {
return Promise.all([response.json(), response.headers]);
}).then(([responseJson, headers]) => {
this.use_response(responseJson, headers)
})

或者由于React应用程序不限于ES5/ES6,可以使用Babel支持的所有功能,因此可以使用async..await来代替,这可以自然地解决此类问题:

send_request = async (data) =>{
url = BASE_URL + "some/url.json"
const response = await fetch(url, {...})
const responseJson = await response.json();
this.use_response(responseJson, response.headers);
}

关于reactjs - 如何在一个 block 中获取响应正文和响应 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52252848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com