繁体   English   中英

使用状态代码和 json 数据获取结果返回

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM