Код бэкенда:
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();
app.use(require('koa-static')('./public'));
app.use(require('koa-bodyparser')());
router.post('/send', async (ctx) => {
const message = ctx.request.body.message;
console.log(message);
});
app.use(router.routes());
app.listen(3000, () => {
console.log('server started!');
});
С клиента запрос отправляется так:
publish.onsubmit = function() {
const xhr = new XMLHttpRequest();
xhr.open("POST", "/send", true);
xhr.send(JSON.stringify({message: this.elements.message.value}));
this.elements.message.value = '';
return false;
};
Запросы уходят успешно с сообщениями. Приходят и успешно ловятся роутером, но console.log(message) постоянно undefined. Что я делаю не так?
Проблема оказалась элементарной. Нужно было всего лишь явно указать Content-Type в клиенте:
const xhr = new XMLHttpRequest();
xhr.open("POST", "/send", true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify({message: this.elements.message.value}));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости