質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

1260閲覧

Node.js でGETした文字列を取得したい

kuroinu

総合スコア2

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2020/07/04 20:27

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

GETは次のURLで指定しています。

http://192.168.1.10:1234/name=hoge&age=20

現在、URLパラメータ(アクティブパラメータ)と呼ばれている QUERY_STRING にも仕様があります。

アドレスバーには http://192.168.1.10:1234/**``?``**QUERY_STRING の形式でアクセスしてみてください。

http://192.168.1.10:1234/?name=hoge&age=20

投稿2020/07/04 22:11

編集2020/07/04 22:16
AkitoshiManabe

総合スコア5432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuroinu

2020/07/05 01:46

ご回答ありがとうございます。 ? が足りませんでしたね。 とても助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問