Express NodeJs Webフレーム学習ノート(二)

17873 ワード

原文リンク燕帰り-Express NodeJs Webフレーム学習ノート(二)
前の勉強を続けて、簡単なExpressではなく、インストールの使用方法を学びました.これからさらに医学Expressルート、中間部品及びデータベースの持続化処理を学びます.
Routeモジュール
上記の例では、下記のコードを使ってルートを作成することができます.
var express = require('express')
var app = express()

app.get("/",function(req,res,next){})

app.get("/book",function(req,res,next){})

app.post("/book",function(req,res,next){})
明らかにこれは私たちのコード管理に不利です.したがって、ここにexpress.Routeモジュールを導入して、モジュール化してルートを処理します.
  • GET/
  • を作成します.
  • GET/book/nodejs
  • を作成します.
  • POST/book/を作成する.
    その中/book/**はルートモジュールに単独で保存されます.
  • app.js同級ディレクトリの下でbook.jsファイルコードの内容を作成します.
    var express = require('express');
    //   router
    var router = express.Router();
    
    //  router     
    router.get('/:id', function (req, res, next) {
        var book = {
            id: req.params.id,
            name: "    NodeJS"
        };
        res.send(JSON.stringify(book))
    });
    
    router.post("/", function (req, res, next) {
        res.send("POST /book")
    });
    
    //     
    module.exports = router;
    
    同じapp.jsでは、上のrouterファイルを導入する必要があります.
    //     
    var express = require('express')
    var app = express()
    
    //   router
    var book_router = require('./book')
    
    //   port  
    const port = 3030;
    
    
    // app    router
    app.use('/book',book_router)
    
    //       GET  
    app.get("/",function(req,res){
        res.send("Hello,World");
    });
    
    
    //     ,      callback() 
    app.listen(port,function(){
        console.log(`Express      ${port}   `);
    });
    
    アプリケーションを起動し、コマンドラインにアクセスすると、次のような結果になります.
    $ curl -XGET http://localhost:3030/             
    Hello,World
    
    $ curl -XGET http://localhost:3030/book/ISBN-123
    {"id":"ISBN-123","name":"    NodeJS"}
    
    $ curl -XPOST http://localhost:3030/book/       
    POST /book
    
    NodeJsのミドルウェア
    中間部品、英語middleWare、すべての要求の消費時間情報及びURLをコンソールで印刷する必要があると仮定すると、各ルートにコードを付けます.明らかに愚かです.これらのルーティング要求のために中間部品を設定し、中間部品を利用して統計を完成します.
    修正appjsコードは以下の内容である.
    //     
    var express = require('express')
    var app = express()
    
    const port = 3030
    
    /**
     *         
     * @param req   ---> requesr
     * @param res   ---> response
     * @param next  --->               
     */
    function logMiddleWare(req, res, next) {
        var url = req.originalUrl;
        //         
        var start = Date.now();
        //  request     ,                  
        req.start_time = start
        //           (         callback)
        next();
        //       
        var end = Date.now();
        //     
        console.log(`${url}       :`, end - start, "ms");
    }
    
    //       
    app.use(logMiddleWare)
    
    app.get("/time", function (req, res, next) {
        console.log(`      start_time = ${req.start_time}`);
        res.send(`

    /

    ${req.start_time}`
    ); }); // app.listen(port, function () { console.log(` ${port} `); });
    私たちは以下をテストしますcurl -XGET http://localhost:3030/time 1541220185998を返します.ここでは主にコンソールの印刷情報を見ます.
         3030   
          start_time = 1541220185998
    /time       : 6 ms
    
    まず、サービスが3030ポートで開始された情報を見ることができます.その後、私たちは要求/timeを開始し、start_を記録しました.timeは、requestに書き込み、続いて/timeのコールバック関数にこのパラメータを印刷し、実行が完了したら、引き続きlogMiddleWareに戻ってend_を記録します.タイム、プリントアウト時間は6 msです.
    統合持久層(redis)
    NodeJSは多くのデータベースの持続的な操作をサポートしています.例えば、頻繁に使われるRedis、Mysql、MongoDBなどです.ここでは簡単にredisを使ってテストしてみます.まず、需要を教えてください.
  • はPOST/redis/として要求を作成します.contentはredisにcontentを書き込みます.
  • は、GET/redisユーザが取得する前の設定
  • を作成する.
    Ps:ここはdockerを使ってレディスサーバーを配置しました.以下の通りです.
    $ docker pull redis
    $ docker run -d -p 6379:6379 --name redis_6379 redis
    $ docker ps #   Redis    
    #   redis  `docker restart redis_6379`
    
    まず、インストールredis依存が必要です.プロジェクトディレクトリの下でnpm install redis --saveをインストールすればいいです.app.jsを修正した内容は以下の通りです.
    //     
    var express = require('express');
    var redis = require('redis')
    var app = express()
    
    const port = 3030
    const redis_port = 6379
    
    //   Redis client    6379
    var client = redis.createClient(redis_port,'localhost');
    
    /**
     *   Redis     , redis         ,   
     */
    client.on('error',function (error) {
        console.log("Redis       ")
    });
    
    
    app.post("/redis/:content",function (req, res, next) {
        var content = req.params.content;
        //       redis  KV  
        client.set('KEY',content)
        res.send("Redis    ")
    })
    
    app.get("/redis",function (req, res, next) {
        client.get('KEY',function (err, value) {
            res.send(value)
        })
    })
    
    //     
    app.listen(port, function () {
        console.log(`     ${port}   `);
    });
    
    テスト内容は以下の通りです
    $ curl -XPOST http://localhost:3030/redis/Keep_it_simple_and_stupid
    Redis    
    
    $curl -XGET http://localhost:3030/redis 
    Keep_it_simple_and_stupid 
    
    もちろん、Redisクライアントでデータを検索することもできます.