[英]Fetch Result Return with status code and json data
我有一个调用 API 后端的 fetch API 调用,作为回报,我将获得带有状态代码的响应对象。 我想做的是基于返回,我想返回带有状态代码的 JSON 响应。 以便 javascript 的其他部分可以根据状态代码进行操作。 我的提取功能如下。
我试过如下,但它作为给定的屏幕截图返回。 它给了我我不想得到的承诺价值。
export const createUser = ( posts ) => {
const apiRoute= "/api/register";
return window.fetch(`${apiRoute}`, {
"headers": headers,
method: "POST",
body: JSON.stringify(posts)
}).then(response => ({
'status' : response.status,
'data' : response.json()
}))
.catch(error => console.error('Error: ', error))
;
}
我知道这可能是这篇文章的副本( 获取 api - 在 then 和 catch 块中获取 json body 以获取单独的状态代码),但我不希望我的数据作为承诺返回。 相反,我想返回完全构造良好的 JSON 数据。
像这样的东西。
{status: 400, data: {id:1,name:Hello World}}
我怎样才能做到这一点?
“它给了我承诺的价值”
没错,根据文档。
您需要在解决外部承诺之前解决该承诺。
例如
.then(response => {
return response.json().then(data => ({
status: response.status,
data
}))
})
或者,使用async
函数
export const createUser = async ( posts ) => {
const apiRoute= "/api/register";
try {
const response = await window.fetch(apiRoute, {
headers,
method: "POST",
body: JSON.stringify(posts)
})
return {
status: response.status,
data: await response.json()
}
} catch (error) {
console.error('Error: ', error)
throw error
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.