Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для Tryd0g0lik
56 / 3 / 1
Регистрация: 04.05.2012
Сообщений: 240

Сервер, ctx.request.body возвращает undefined. Где ошибка? подскажите

23.08.2023, 08:33. Показов 1455. Ответов 22

Студворк — интернет-сервис помощи студентам
ДЕнь добрый.

Отправляю запрос
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(async () => {
        const res = await fetch('http://localhost:7070/', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json;charset=utf-8'
            },
            body: JSON.stringify("{'phone':'11111', 'name': 'Kuku'}"),
            mode: 'no-cors'
        });
 
        const result = await res;
        const jsonRes = await JSON.stringify(result);
        return jsonRes
    })();
И на сервере `ctx.request.body || ctx.body` вместо `body` получаю `undefined`
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
const Koa = require('koa');
const json = require('koa-json');
const Router = require('koa-router');
// ...
 
router.post('/', (ctx: any) => {
    console.log('ROUTER request POST');
    const body = ctx.request.body;
 
 
    ctx.response.body = { status: "OKs" }
        console.log(ctx); // то что видим в консое
 
    ctx.response.set('Access-Control-Allow-Origin', '*');
    ctx.response.set('Access-Control-Allow-Headers', 'POST');
 
});
 
 
 
const server = http.createServer(app.callback())
const wsServer = new WS.Server({ server });
 
wsServer.on('connection', (ws: any) => {
 
    ws.send('Hello Ws connection')
});
Хотя `ctx.response.body` в ответе вижу.

При это консоль
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
  request: {
    method: 'POST',
    url: '/',
    header: {
      'content-type': 'application/json',
      'user-agent': 'PostmanRuntime/7.32.2',
      accept: '*/*',
      'cache-control': 'no-cache',
      'postman-token': '...',
      host: 'localhost: 7070',
      'accept-encoding': 'gzip, deflate, br',
      connection: 'keep-alive',
      'content-length': '33'
    }
  },
  response: {
    status: 200,
    message: 'OK',
    header: [Object: null prototype] {
      'content-type': 'application/json; charset=utf-8'
    }
  },
  app: { subdomainOffset: 2, proxy: false, env: 'development' },
  originalUrl: '/',
  req: '<original node req>',
  res: '<original node res>',
  socket: '<original node socket>'
}
Что не так или не туда смотрю.
Посему консоль даже не показывает `body`? Подскажите.

Добавлено через 1 минуту
Вроде нашёл ответ.
Подключил
JavaScript
1
2
3
4
5
const { koaBody } = require('koa-body');
 
app.use(koaBody({
    urlencoded: true,
}));
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.08.2023, 08:33
Ответы с готовыми решениями:

Сервер возвращает ошибку 400 Bad Request
Посылаю серверу пакет данных, который получаю от браузера. Использую сокеты для отправки и приёма. например для доступа к mail.ru такой...

Научите прикручивать request body
Всем привет, я, так сказать,только на пути к просветлению. Нужно послать с помощью request.post запрос на определеный сайт. С помощью...

Stream в Request/Response Body
Добрый день, может кто объяснить, почему body это стрим, почему он не может прийти строкой, и если все же это стрим, то откуда я его...

22
 Аватар для Tryd0g0lik
56 / 3 / 1
Регистрация: 04.05.2012
Сообщений: 240
24.08.2023, 14:20  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от krvsa Посмотреть сообщение
JSON.stringify - не асинхронный
тут и не было смысла об асинхронности думать. Это лишь настроки к fetch

Хорошо. Попробую переписать верверный код , чтоб использовать `.json()`
Сейчас это лишь выдает ошибку так как уже в формате json получаю
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3857 / 1755 / 432
Регистрация: 14.03.2022
Сообщений: 4,441
24.08.2023, 14:23
Вот тебе вариант с async / await...

JavaScript
1
2
3
4
5
(async _ => {
   const res = await fetch('https://jsonplaceholder.typicode.com/todos/1')
   json = await res.json()
   console.log(json)
})()
Добавлено через 1 минуту
Цитата Сообщение от Tryd0g0lik Посмотреть сообщение
Это лишь настроки к fetch
Тут вообще я ничего не понял...

Добавлено через 1 минуту
Цитата Сообщение от Tryd0g0lik Посмотреть сообщение
Попробую переписать верверный код
Если тебе нужна именно строка в ответе - читай ответ методом .text()
Серверный код ведь тебе устраивал. Ты просто не понимаешь как получить теле ответа.
0
1 / 1 / 0
Регистрация: 19.11.2020
Сообщений: 1
24.08.2023, 16:31
У тебя есть несколько проблем с кодом, которые могут привести к тому, что ctx.request.body возвращает undefined.

Отсутствие body-parser: Когда ты используешь Koa.js и хочешь работать с телом запроса, тебе например надо использовать middleware для разбора тела запроса. Самым популярным из них является koa-bodyparser.

JSON stringify: В твоем запросе fetch ты вызываете JSON.stringify на строке, что приведет к двойному кодированию.

добавь
const bodyParser = require('koa-bodyparser');
//...

app.use(bodyParser());

вместо
body: JSON.stringify("{'phone':'11111', 'name': 'Kuku'}"),

используй
body: JSON.stringify({'phone':'11111', 'name': 'Kuku'}),
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.08.2023, 16:31

Подскажите почему сервер возвращает пустое значение
Форумчане, очень требуются ваши советы да и в целом помощь. Есть сервер на C# и есть расширение Chrome, не могу отправить данные на...

Can't deserialize request body into type: LoginPassword
Добрый день, Прошу помочь, уже пересмотрел кучу форумов. Подскажите пожалуйста - как можно исправить ошибку: Can't deserialize...

Подскажите, Сервер принимает запросы, выполняет и возвращает ответ
Добрый день! Если программа сервер будет принимать от клиентского приложения команду выполнить SQL запрос, сервер будет выполнять запрос...

Required request body is missing: public org.springframework
Т.к. ответить на мой вопрос как отправить массив из Локал сторидж не смогли ни...

Препод говорит где - то ошибка в синтаксисе. Сам код взят из "жефри Рихтер - Создание эффективных WIN32 приложений" Пожалуйста, подскажите где ошибка!
// получаем код ошибки DWORD dwError = GetDlgItemInt(hwnd, IDC_ERRORCODE, NULL, FALSE); HLOCAL hlocal = NULL; // буфер для строки с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru