#javascript
Вопрос:
У меня есть приведенный ниже код JS, который возвращает статус 201,
Я работаю с локальным сервером, который работает правильно, как только я проверил его на клиенте thunder, как показано на рисунке:
Мой код таков:
async function send(params) {
var path = document.querySelector('#path');
var skills = document.querySelector('#skills');
var skillsList = skills.value
skillsList = skillsList.replace(/nr?/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, как ожидалось, и как показано на клиенте thunder?
Комментарии:
1. Какой у тебя вопрос ?
2. В чем ваш вопрос/проблема?
3. @jonrsharpe Почему я получаю 201, а не возвращенный объект JSON, как ожидалось, и как показано на клиенте thunder?
4. @Furman Почему я получаю 201, а не возвращенный объект JSON, как ожидалось, и как показано на клиенте thunder?
5. Почему ваш сервер возвращает 201, когда вы, очевидно, этого не хотите?
Ответ №1:
Ваш «клиент thunder» показывает, что код ответа 201 успешно получен с вашего бэкенда (а коды 2xx являются успешными ответами в соответствии со стандартом HTTP).
Вы прямо заявляете, что если это не 200, то это провал. Измените это в своем коде, чтобы принять все 2xx. (окно.fetch возвращает экземпляр ответа, который устанавливает атрибут ok
только для чтения в значение true, если код ответа равен 2xx MDN)
.then(resp => {
if (resp.ok) {
return resp.json();
} else {
console.log("Status: " resp.status)
return Promise.reject("server")
}
})
201 означает Созданный,
Запрос удался, и в результате был создан новый ресурс. Обычно это ответ, отправляемый после запросов POST или некоторых запросов PUT. MDN
Комментарии:
1. Большое спасибо, я только что исправил это на своем сервере, заменил
w.WriteHeader(http.StatusCreated)
наw.WriteHeader(http.StatusOK)
благодарное ваше объяснение, которое помогло мне просмотреть код моего сервера.