前提・実現したいこと
Node.jsでGETした文字列を取得したいのですが、
undefinedになってしまい取得できません。
GETは次のURLで指定しています。
http://192.168.1.10:1234/name=hoge&age=20
何か情報ございましたら、よろしくお願いします。
期待していた出力
nameはhoge ageは30
実際の出力
nameはundefined ageはundefined
該当のソースコード
javascript
1var http = require('http'); 2var fs = require('fs'); 3var url = require('url'); 4var qs = require('querystring'); 5var util = require('util'); 6 7var indexPage = fs.readFileSync('index.html', 'utf-8'); 8 9var server = http. createServer(function(req, res) { 10 if(req.method == 'GET'){ 11 var urlParts = url.parse(req.url,true); 12 13 console.log('req.url=' + req.url); 14 console.log('--------------------'); 15 console.log('urlParts=' + urlParts); 16 console.log('--------------------'); 17 console.log(util.inspect(urlParts,false,null)); 18 console.log('--------------------'); 19 //console.log('-------urlParts.query=' + urlParts.query); 20 console.log(util.inspect(urlParts.query,false,null)); 21 console.log('--------------------'); 22 23 console.log('---GET Request---'); 24 console.log('nameは' + urlParts.query.name); // nameはhogeとなって欲しかった 25 console.log('ageは' + urlParts.query.age); // ageは30となって欲しかった 26 }else{ 27 var body = ""; 28 req.on('data', function(data){ 29 body += data; 30 }); 31 32 req.on('end', function(){ 33 var params = qs.parse(body); 34 console.log('---POST Request---'); 35 console.log('nameは' + params.name); 36 console.log('ageは' + params.age); 37 }); 38 } 39 40 res.writeHead(200, {'Content-Type':'text/html'}); 41 res.write(indexPage); 42 res.end(); 43}); 44 45server. listen(1234); 46console. log(' サーバ を 起動 し まし た'); 47 48
試したこと
req.urlやurlPartsの中身を出力しました。
urlParts.queryがnullになっているような気がしますが、理由はわかりませんでした。
なお、POST側の処理ではパラメータを取得出来ていました。
出力結果全文
$ node sample.js サーバ を 起動 し まし た req.url=/name=hoge&age=20 -------------------- urlParts=[object Object] -------------------- Url { protocol: null, slashes: null, auth: null, host: null, port: null, hostname: null, hash: null, search: null, query: [Object: null prototype] {}, pathname: '/name=hoge&age=20', path: '/name=hoge&age=20', href: '/name=hoge&age=20' } -------------------- [Object: null prototype] {} -------------------- ---GET Request--- nameはundefined ageはundefined
補足情報(FW/ツールのバージョンなど)
ubuntu 18.04
Node.js 12.18.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/05 01:46