post параметры.
Господа, ну как то с разбегу и об стену....
Получаю http запрос, нужно вытащить post параметры. Как бы не сложно. Много примеров.... ну вот как то так: const qs = require('querystring'); http.createServer( function(request,response){ ....... if(request.method ==="POST"){ request.on('data', function (data) { body += data.toString(); }); request.on('end', function () { console.log(qs.parse(body)); }); ........................... в результате в body получаем: ------------------------------7db738db57ad Content-Disposition: form-data; name="key" popandos ------------------------------7db738db57ad Content-Disposition: form-data; name="key1" popandos1 и после parse оно же и остается.... ( что это за данные - писать не нужно - понятно. вопрос почему не парсит. Руками самостоятельно распарсить - без проблем, но блин почему не парсит? есть какой то другой вариант или самому писать? express и подобное не предлагать С наступившим всех ))) Спасибо |
Цитата:
Сделал такую страничку... <!DOCTYPE html> <html> <head> <!-- <script src='https://code.jquery.com/jquery-latest.min.js'></script> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script> <link rel="stylesheet" type="text/css" href="tmp.css" /> <script src='tmp.js'></script> --> <style> </style> <script> </script> </head> <body> <form method='post' action='http://localhost:3000'> <input name='test' type='text' /> <input name='test' type='text' /> <button>Send</button> </form> </body> </html> Такой сервер...
const http = require('http');
const url = require('url');
const { parse } = require('querystring');
http.createServer((request, response) => {
console.log('server work');
if (request.method == 'GET') {
// GET -> получить обработать
console.log(request.method); // !!!!
let urlRequest = url.parse(request.url, true);
// console.log(urlRequest);
console.log(urlRequest.query.test); // ! GET Params
if (urlRequest.query.test % 2 == 0) {
response.end('even');
}
response.end('odd');
}
else {
// POST
let body = '';
request.on('data', chunk => {
body += chunk.toString();
});
request.on('end', () => {
console.log('body', body);
let params = parse(body);
console.log('params', params);
console.log('params.test', params.test);
response.end('ok');
});
}
}).listen(3000);
https://www.itgid.info/unit/nodejs?unit=nodejs-8 Вот результат работы
server work
body test=12345&test=asdf
params [Object: null prototype] { test: [ '12345', 'asdf' ] }
params.test [ '12345', 'asdf' ]
Как по мне - все парсит. :-? |
О да, свершилось чудо. засунул в post какую то фигню, ну и еще хуже получил на выходе. действительно работает... ну так нихто ж не сомневался )
|
fxobject, у тебя пост запрос приходит как multipart/form-data а читать ты пытаешься как application/x-www-form-urlencoded.
|
| Часовой пояс GMT +3, время: 09:42. |