TIL-Express-ルータの切断


ルーティングとは?


  • ルーティングの概念
    ルーティング(英語:routing)は、あるネットワーク内で通信データを送信する際に最適なパスを選択するプロセスです.最適なパスは、所与のデータを最短距離または最短時間で伝送するパスである.

  • ルーティングとは、ネットワークからパケットを送信する際に最適なパスを選択するプロセスです.ルータとは,ネットワーク7層OSIモデルにおいてルーティング機能を担う機器(ルータ)である.
  • パケット:ネットワーク層で伝送されるデータのパケットまたは伝送単位を指す.

  • しかし、上記の定義は多少は理論的(歴史的)定義と言える.Web開発フレームワークで用いられるルーティングの概念は,クライアントから要求されたURLとビューをマッチングするといえる.
  • #ルータを切断する必要がある

  • ルータを分離する必要があるのは、フレームワークにルーティング操作を追加すると、スクリプトファイルのコード量が多すぎるためです.分離ルータは、相互に関連するルータを結合し、個別のスクリプトファイルに分散することができ、コード量を制御し、プロジェクト構造を清潔に保つのに役立ちます.
  • #Expressからルータを切り離す


  • サーバファイルの作成
    まず、サーバファイル(app.js)
  • を作成します.サーバファイルは、生成されたルータをミドルウェアとして登録するために使用されます.
  • const express   = require('express');
    const app       = express();
    const cors      = require('cors');
    
    // 서버 생성
    const server = app.listen(8000, () => 
     console.log('Start Server: localhost:8000')
    );

  • ルータフォルダの作成
  • ルータモジュールを作成する前に、次の画像のようにルーティングフォルダを作成し、ルータモジュールを格納して管理することをお勧めします.これは、プロジェクト構造をきれいに管理できるからです.
  • ルータモジュール(users.js)
  • を作成
    // 패키지 express 를 활용하여 라우터 객체 생성
    const router = require('express').Router();
    
    // 생성된 라우터 객체를 활용해 라우터 정의
    router.get('/login', async (req, res) => {
        res.send('This is login page')
    });
    
    // 생성한 라우터 객체를 모듈화시키기
    module.exports = router

  • ルータオブジェクトをミドルウェアとして登録する
    まず、作成されたルータモジュールusers.jsのルータオブジェクトをインポートする.
  • 次に、expressによって生成された
  • オブジェクトにルータオブジェクトをミドルウェアとして登録する.
  • const express   = require('express');
    const app       = express();
    const cors      = require('cors');
    // 라우터 객체 import 하기
    const user      = require('./routes/users');
    
    // 서버 생성
    const server = app.listen(8000, () => 
     console.log('Start Server: localhost:8000')
    );
    
    // users.js의 라우터 객체를 미들웨어로 등록
    app.use('/users', user)

    #複数種類のミドルウェアの登録

  • サーバファイル(app)は、ルータのほかに、複数のミドルウェアを登録することもできます.
  • 例えば、CORS問題を解決するためにapp.jsオブジェクトを登録することが典型的な例である.
  • CORSパッケージインストール:cors()
  • const express   = require('express');
    const app       = express();
    const cors      = require('cors');
    const user      = require('./routes/users');
    
    // 서버 생성
    const server = app.listen(8000, () => 
     console.log('Start Server: localhost:8000')
    );
    
    // users.js를 미들웨어로 등록
    app.use('/users', user)
    
    
    // request의 body 데이터에 접근하기 위해 미들웨어 등록
    app.use(express.json() );
    app.use(express.urlencoded( {extended : true } ));
    
    
    // CORS 미들웨어 등록
    app.use(cors());
    
    // 오류 처리 미들웨어 등록
    app.use(function (err, req, res, next) {
        console.error(err.stack)
        res.status(500).send('JsonDecodeError!')
    });
    
    // server 객체를 모듈화시키기
    module.exports = server