Node.jsでhttps.getしてJSONパースする方法【初心者向け】
初心者向けにNode.jsを使ってhttpsでgetしてJSONパースする方法について解説しています。getメソッドを使用してURLで指定した情報を取得する書き方を説明し、実際に簡単なプログラムを書いているので、参考にしてみてください。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Node.jsでhttpsでgetしてJSONパースする方法を解説します。
簡単なプログラムを書きながら説明しているので、ぜひ参考にしてみてください。
なお本記事は、TechAcademyのNode.jsオンライン講座の内容をもとに作成しています。
今回はWeb上で情報を取得する方法について学習してみようか。
田島メンター!具体的には何を使うんですか~?
ここで利用するのはhttpsモジュールとJSONパースだね。まずはそれぞれの役割について解説しよう。
分かりました。よろしくお願いします!
Node.jsでhttps getとは
Node.jsでhttps getするとは、httpsモジュールを使用してgetメソッドを使用してURLで指定した情報を取得することです。
モジュールとはnpmで管理されている便利な機能の事です。
npmに関しての記事も参考にしてみてください。
httpsとは、Hyper Text Transfer Protocol Secureの略です。
もともとhttpという通信規格でインターネット通信を行っていました。
httpをより安全にしたものがhttpsで、暗号化してデータ通信を行います。
JSONパースとは
JSONパースするとは、JSONのデータを解析して使用するという事です。
ここでの説明ではデータ量が少ないJSONを使用します。
実務では、データ量が多くなると、そのままでは読みづらいため、JSONデータをパースする必要があります。
JSONとは「JavaScript Object Notation 」の略で、JavaScriptのオブジェクトの記法として開発されました。
JSONの簡単な例として次のような記載を行います。
JSONデータ例
{"a":"現役エンジニア","b":"短期集中","c":"効率的学習"}
解説
aの中に現役エンジニアが入っているというような考え方で記載します。
httpsモジュールと、JSONパースについての説明だよ。
httpsモジュールで取得したJSONのデータを使うためにパース、解析を行うという形ですね。
次にそれぞれの基本の書き方と、実際の例を確認してみよう。
Node.jsでhttps.getする方法
ソースコード
let https = require('https'); const URL = '取得するJSONのURL'; https.get(URL, function (res) { });
解説
1行目のlet https = require(‘https’);では、httpsモジュールを取得して変数httpsに代入しています。
npm requireについての記事も参考にしてみて下さい。
letで宣言する変数は、ブロックスコープと呼ばれる限られた範囲で使用できます。
特徴として、変数名の重複ができないため、不具合が発生しづらいです。
変数とは、値を入れる箱のようなものです。
2行目のconst URL = ‘取得するJSONのURL’;では、取得するJSONのURLで指定したURLを定数URLに代入しています。
constは定数と呼ばれ、変更できない決まった変数です。
3行目のhttp.get(URL, function (res) {では、getメソッドを使用しています。
URLのパラメーター部分にはURL以外も指定する事ができます。
function(res)では、実際の処理を記載します。
4行目の});では3行目の処理を終了しています。
指定可能なパラメーター
hostname port path header
指定可能なパラメーター解説
hostnameはホスト名かIPアドレスです。住所のようなもので通常はlocalhostになります。
portはポート番号です。hostnameに接続した際の入り口の場所ようなもので、通常は80です。
pathはパスです。パスとはURLのようなアドレス等が入ります。
また、クエリ文字列と呼ばれる要求値を含むパスである事もあります。
クエリ文字を含むパスとは、検索サイトで検索する際に含まれるパスです。
例えば、「プログラミング」とgoogleで検索する場合は、次のようなパスになります。
「https://www.google.co.jp/search?q=プログラミング」
この最後の「プログラミング」部分がクエリ文字になります。headerとは、httpsを使用して通信を行う際のヘッダー情報です。
Node.jsでJSONをパースする方法
基本のコード
var json = '{"a":"短期集中", "b":"42"}'; JSON.parse(json);
解説
1行目のvar json = ‘{“a”:”短期集中”, “b”:”42″}’;では、JSONデータを変数jsonに代入しています。
varで宣言した変数は自由に関数内で利用できます。
2行目のJSON.parse(json);でjsonに入ったJSONデータをパースしています。
Node.jsでhttpsでgetしてJSONパースを実際にやってみよう
ソースコード
const https = require('https'); const req = https.request('https://qiita.com/wakaba130/items/5f54aed913156dc4438f.json', (res) => { res.on('data', (chunk) => { console.log(`BODY: ${chunk}`); }); res.on('end', () => { console.log('JSONデータは以上です。'); }); }) req.on('error', (e) => { console.error(`エラーが出ました: ${e.message}`); }); req.end();
表示結果
解説
1行目の、const https = require(‘https’);では、npmモジュールのhttpsを呼び出しています。
2行目の、const req = https.request(‘https://qiita.com/wakaba130/items/5f54aed913156dc4438f.json’, (res) => {では、https://qiita.com/wakaba130/items/5f54aed913156dc4438f.jsonで指定したURLの結果取得できるJSONを処理しています。
最終的には定数reqに代入しています。
3行目の、res.on(‘data’, (chunk) => {では、res.onイベントをdataを指定して使用する事でパース処理を開始しています。
4行目の、console.log(`取得内容: ${chunk}`);では、3行目のchunkをconsole.logで表示しています。
console.logを利用すると、デベロッパーツールのConsoleにも表示する事が可能です。
5行目の、});では、3行目の処理を終了しています。
6行目の、res.on(‘end’, ( ) => {では、res.onイベント処理を終了する宣言をしています。
必ず、このres.on(‘end’処理を記載する必要があります。
7行目の、console.log(‘JSONデータは以上です。’);では、JSONデータは以上です。というテキストを表示する事でユーザーに処理の終了を明示しています。
8行目の、});では6行目の処理を終了しています。
9行目の、})では、2行目の処理を終了しています。
10行目の、req.on(‘error’, (e) => {では、リクエストがエラーだった場合の処理をしています。
11行目の、console.log(`エラーが出ました: ${e.message}`);では、 ${e.message}に代入されているエラーメッセージが出力されます。
12行目の、});3行目の処理を終了します
13行目の、req.end( );では、リクエスト処理を終了します。
httpsでgetしてJSONパースを行うまでの一連の流れを見てみたよ。
今回はconsole.logで取得したデータを表示したということですね。
console.logを使ったデバッグの方法は、また別のところで解説しているのでそちらも併せて学習しておこう。
はい!ありがとうございました!
今回は、Node.jsでhttpsでgetしてJSONパースする方法を解説しました。
また、オンラインのプログラミングスクールTechAcademyでは、Node.jsオンライン講座を開催しています。
Node.jsを使ってWebアプリケーションを開発することができます。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、習得することが可能です。
この記事を監修してくれた方
中本賢吾(なかもとけんご) 開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。 その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。 |