Аватар для Tryd0g0lik
56 / 3 / 1
Регистрация: 04.05.2012
Сообщений: 240

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

23.08.2023, 08:33. Показов 1485. Ответов 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
3862 / 1765 / 434
Регистрация: 14.03.2022
Сообщений: 4,457
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Video: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru