Node.js 外部APIを実行してレスポンスをコンソールに出力する

# 概要

- Node.jsにて外部APIを実行してレスポンスをコンソールに出力する方法をまとめる。

# 情報

- 下記サービスを用いてコードの動作確認を実施した。
    - [https://codesandbox.io/s/node-playground-forked-8zdskb?file=/src/index.js](https://codesandbox.io/s/node-playground-forked-8zdskb?file=/src/index.js)

# 使用する外部API

- Qiitaのユーザー情報を取得するAPIを実行してみる。
    - [https://qiita.com/api/v2/docs#get-apiv2usersuser_id](https://qiita.com/api/v2/docs#get-apiv2usersuser_id)
- どうやら`https://qiita.com/api/v2/users/ユーザーid`とすることでユーザーの公開されている基本情報を取得する事ができるっぽい。
- 筆者の場合`https://qiita.com/api/v2/users/miriwo`となる。念の為curlで実行してみたら下記の様に情報が帰ってきたのでこのURLにGETリクエストを送れば情報が取得できるっぽい。

    ```bash
    curl https://qiita.com/api/v2/users/miriwo
    {"description":"みらいのじぶんにむけてきじをかいてます\r\nコルチゾール駆動開発","facebook_id":"profile.php?id=100040336992140","followees_count":68,"followers_count":211,"github_login_name":"miriwo0104","id":"miriwo","items_count":1162,"linkedin_id":"","location":"japan","name":"大川 峻","organization":"株式会社アンテク","permanent_id":306417,"profile_image_url":"https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/profile-images/1583802366","team_only":false,"twitter_screen_name":"mirimiripc","website_url":"https://miriwo.hatenablog.com/"}
    ```

# 方法

## 追加モジュールなし

- 下記の様にコードを記載して実行すると情報を取得する事ができる。

    ```node.js
    import https from "https";
    
    const url = "https://qiita.com/api/v2/users/miriwo";
    
    https.get(url, (res) => {
        let body = '';
        console.log("statusCode:", res.statusCode);
        console.log("headers:", res.headers);
      
        res.on("data", function (d) {
          body += d;
        });
        
        res.on('end', function () {
          console.log(body);
        })
    })
    .on("error", (e) => {
        console.error(e);
    });
    ```

- 上記を実行すると下記の様にコンソールに出力される。

    ```
    statusCode: 200
    headers: {cache-control: "max-age=0, private, must-revalidate", content-type: "application/json; charset=utf-8"}
    {"description":"みらいのじぶんにむけてきじをかいてます\r\nコルチゾール駆動開発","facebook_id":"profile.php?id=100040336992140","followees_count":68,"followers_count":211,"github_login_name":"miriwo0104","id":"miriwo","items_count":1162,"linkedin_id":"","location":"japan","name":"大川 峻","organization":"株式会社アンテク","permanent_id":306417,"profile_image_url":"https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/profile-images/1583802366","team_only":false,"twitter_screen_name":"mirimiripc","website_url":"https://miriwo.hatenablog.com/"} 
    ```

## 追加モジュールあり

- この方法は追加パッケージを使うのでWeb上のPlaygroundでは実行できない。
- 下記の様にrequestパッケージをインストールする。

    ```bash
    npm install request
    ```

- 下記の様に記載する。

    ```node.js
    import request from 'request';
    const url = 'https://qiita.com/api/v2/users/miriwo';
    
    const method = 'GET';
    const options = {
        url: url,
        method: method,
    };
    
    export const handler = (event) => {
        request(options, function (error, response, body) {
            console.log(body);
        });  
    };
    ```

- 上記を実行すると下記の様に出力される。

    ```
    {"description":"みらいのじぶんにむけてきじをかいてます\r\nコルチゾール駆動開発","facebook_id":"profile.php?id=100040336992140","followees_count":68,"followers_count":211,"github_login_name":"miriwo0104","id":"miriwo","items_count":1163,"linkedin_id":"","location":"japan","name":"大川 峻","organization":"株式会社アンテク","permanent_id":306417,"profile_image_url":"https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/profile-images/1583802366","team_only":false,"twitter_screen_name":"mirimiripc","website_url":"https://miriwo.hatenablog.com/"}
    ```

# 参考文献

https://nodejs.org/api/https.html#httpsgetoptions-callback

https://qiita.com/api/v2/docs#get-apiv2usersuser_id