我有下面的 JS 代码,它返回 status 201,
我在本地服务器上使用它,当我在 thunder client 处检查后它工作正常,如图所示:
我的代码是:
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 对象,并且如雷霆客户端所示?
答案 0 :(得分:0)
您的“thunder 客户端”显示 201 响应代码是来自您后端的成功(根据 HTTP 标准,2xx 代码是成功响应)
您明确声明,如果不是 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