【Node基礎】RESTful API を理解する

CATEGORY : javascript
【Node基礎】RESTful API を理解する 【Node基礎】RESTful API を理解する
今回は、JavaScriptのフレームワークVueを使用したサーバーサイドからデータを取得してコンポーネントに表示する基本的な流れ、Webシステムを外部から利用する簡単なRESTful APIについて紹介させていただきます。
目次

    VueとNodeのRESTful API

    Vue.js と Node.js を使用した RESTful API の実装は、Vue.js(フロントエンド)とNode.js(バックエンド)間でデータをやり取りするために使われることが一般的です。ここでは JavaScript ランタイムで活用されるExpress.jsにて簡単なRESTful APIを作成、サーバーからデータを取得する例を紹介させていただきます。※本記事の実行環境はローカルとします。

     

    Node.js インストール

    Node.js を公式サイトからインストール、コマンドでバージョン確認ができればインストール完了ですね。

     

    
    node -v
    

     

    プロジェクト作成

    ここでは例としてrestful-apiディレクトリを作成し、コマンドでディレクトリへ移動。プロジェクトを初期化します。

     

    
    mkdir restful-api
    cd restful-api
    npm init -y
    

     

    Expressインストール

    Expressは、Node.jsのWebフレームワークでAPIを簡単に作成できます。

     

    
    npm install express
    

     

    Expressを使いAPIサーバー作成

    Express を使って以下のようなファイル構成で簡単な API サーバーを作成します。

     

    restful-api/
    ├─ server.js
    └─ package.json

     

    server.jsファイル用意

    Expressを使ってGETエンドポイントを作成し、サーバーを立ち上げます。

     

    
    // server.js
    // Express フレームワークを使用するための基本的なセットアップ
    const express = require('express'); //Expressモジュールを読み込む
    const app = express();
    const port = 3000;
    
    // リクエストとレスポンスの間で実行されるミドルウェアとして JSON を解析
    // req.body 格納
    app.use(express.json());
    
    // サンプルデータを提供するAPI
    app.get('/api/user', (req, res) => {
      const user = {
        id: 1,
        name: 'なんだっけ 太郎',
        email: 'nandakke@example.com'
      };
    
      res.json(user);  // JSON形式でユーザー情報を返す
    });
    
    // サーバー起動
    app.listen(port, () => {
      console.log(`SERVER RUN  http://localhost:${port}`);
    });
    

     

    Nodeは中間にいるAPIサーバーで、今回はサンプルデータとしてAPIを仮に用意していますが、サーバーからデータを取得する場合もコードの基本は同じです。もしmySqlからデータを取得する場合は、MySQLに接続し、GETエンドポイントにquery文にてSELECT * FROM usersなどsqlにて取得、res.jsonでJSON形式で情報を返すという流れですね。(XMLとかも理論上はできるかもしれませんがJSONが標準かと。)

     

     

    ■ サーバーの起動

    以下のコマンドでサーバーを起動

    
    node server.js
    

     

    コマンドでサーバーが立ち上がり、以下のようなメッセージが表示されれば起動成功です。

     

    
      SERVER RUN  http://localhost:3000
    

     

    http://localhost:3000/api/userにアクセスしてみてください。ブラウザに以下のような JSON レスポンスが表示されているかと。

     

    
    {
      "id": 1,
      "name": "なんだっけ 太郎",
      "email": "nandakke@example.com"
    }
    

     

    これで、サーバーサイドからデータを提供する API が完成です。

     

     

    フロントエンドにてAPIデータ取得

    フロントエンドから、この API を使ってデータを取得します。

     

    
    <script setup>
    import { ref, onMounted } from 'vue';
    import axios from 'axios';
    
    const user = ref(null);
    const loading = ref(true);
    
    onMounted(() => {
      axios.get('http://localhost:3000/api/user')
        .then((response) => {
          user.value = response.data;  // user の値を更新
          loading.value = false;  // loading を false に変更
        })
        .catch((error) => {
          console.error('There was an error!', error);
          loading.value = false;  // エラー時も loading を false に変更
        });
    });
    </script>
    <template>
      <div>
        <h1>User Profile</h1>
        <div v-if="loading">LOADING...</div>
        <div v-else>
          <p> {{ user.name }}</p>
          <p> {{ user.email }}</p>
        </div>
      </div>
    </template>
    

     

    ■ axios

    APIとの通信を行う際に使用されます。Axiosは、非同期通信を簡単に処理します。axios.getで非同期にデータを取得し、成功した場合はuser.valueにデータを格納、失敗した場合はエラーメッセージをコンソールに出力。

     

    ■ ref

    リアクティブ変数を使って、user.valueやloading.valueと値を操作。

     

    ■ onMounted()

    onMounted フックを使い、コンポーネントがマウントされた後に API を呼び出し。

     

     

    まとめ

    今回は、Webシステムを外部から利用する簡単なRESTful APIについて紹介をさせていただきました。Expressを使って簡単に RESTful API を作成でき、Expressにて異なる HTTP メソッドに対応するエンドポイントを作成できます。また上記基本にフロントエンドから、API を利用してデータを取得また送信したりできます。

    以上となります。できる限りわかりやすく伝えようとしても書くのは難しいです。
    コードや記事の書き方について気になるところがあれば、アドバイスいただけると嬉しいです。

    【Node基礎】RESTful API を理解する
    CATEGORY : javascript

    アシリソリューション

    アシリソリューション

    アシリ・ソリューション

    要件定義からブラッシュアップ/実装運用まで一貫して担当。また内部対策を中心に、GTM・GA4・Looker Studioと分析・改善案の策定も進めています。北緯43度マルチエンジニア

    最近のなんだっけぇ

    1. 【Node基礎】APIエンドポイントの保護を理解する

      【Node基礎】APIエンドポイントの保護を理解する

    2. 【Node基礎】RESTful API を理解する

      【Node基礎】RESTful API を理解する

    3. 【Vue基礎】Vue Routerのネストを理解する

      【Vue基礎】Vue Routerのネストを理解する

    4. 【Vue基礎】v-onディレクティブを理解する

      【Vue基礎】v-onディレクティブを理解する

    5. 【Vue基礎】v-modelディレクティブを理解する

      【Vue基礎】v-modelディレクティブを理解する

    6. 【javaScript基礎】reduce メソッドを理解する

      【javaScript基礎】reduce メソッドを理解する

    1. API
    2. computed
    3. css
    4. ECMA
    5. javascript
    6. jquery
    7. Node
    8. php
    9. reactive
    10. reduce メソッド
    11. ref
    12. sass
    13. SSH
    14. v-bind
    15. v-on
    16. Vue
    17. Vディレクティブ
    18. wordpress
    19. セキュリティ対策
    20. 入れ子
    21. 繰り返し処理
    22. 関数