获取状态 201

时间:2021-08-01 18:41:24

标签: javascript

我有下面的 JS 代码,它返回 status 201enter image description here

我在本地服务器上使用它,当我在 thunder client 处检查后它工作正常,如图所示:

enter image description here

我的代码是:

async function send(params) {
    var path = document.querySelector('#path');
    var skills = document.querySelector('#skills');
    var skillsList = skills.value
    skillsList = skillsList.replace(/\n\r?/g, '|');
    const dataToSend = JSON.stringify({"path": path.value, "skills": skillsList});
    console.log(dataToSend);
    let dataReceived = ""; 
    fetch("http://localhost:3000/getSkills", {
        credentials: "same-origin",
        mode: "cors",
        method: "post",
        headers: { "Content-Type": "application/json" },
        body: dataToSend
    }).then(resp => {
        if (resp.status === 200) {
            return resp.json();
        } else {
            console.log("Status: " + resp.status)
            return Promise.reject("server")
        }
    }).then(dataJson => {
        dataReceived = JSON.parse(dataJson)
        console.log(`Received: ${dataReceived}`)
    }).catch(err => {
        if (err === "server") return
        console.log(err)
    }) 
}

为什么我得到的是 201,而不是像预期的那样返回 JSON 对象,并且如雷霆客户端所示?

1 个答案:

答案 0 :(得分:0)

您的“thunder 客户端”显示 201 响应代码是来自您后端的成功(根据 HTTP 标准,2xx 代码是成功响应)

201 picture

您明确声明,如果不是 200,则为失败。在您的代码中更改此项以接受所有 2xx。 (window.fetch 返回一个 Response 实例,如果响应代码为 2xx MDN,它会将只读属性 ok 设置为 true)

.then(resp => {
  if (resp.ok) {
    return resp.json();
  } else {
    console.log("Status: " + resp.status)
    return Promise.reject("server")
  }
})

201 表示创建,

<块引用>

请求成功,结果创建了一个新资源。这通常是在 POST 请求或某些 PUT 请求之后发送的响应。 MDN