趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。
RSS icon
  • heroku+node.jsでHello Worldしてみた(3)

    投稿日 2015年 7月 25日 コメントはありません

    さらに続きです。

    14.変数の扱いを見てみる

    プログラムを以下のように修正してみました。

    var express = require("express");
    var app = express();
    //app.use(express.logger());
    var count = 1;
    
    app.get('/', function(request, response) {
    	response.send('Hello wonderful Heroku world! <BR />'
          + 'あなたのアクセスは' + count + '回目です');
        count++;
    })
    
    var port = process.env.PORT || 5000;
    app.listen(port, function() {
    	console.log("Listening on " + port);
    });
    

    ローカルで実行してみます。

    ~/heroku/hello-heroku $ foreman start
    14:09:38 web.1 | started with pid 5102
    14:09:38 web.1 | Listening on 5000

    リロードするたびに数値が増えます。

    Screenshot-Mozilla Firefox-3

    次に、デプロイしてみます。

    ~/heroku/hello-heroku $ git add .
    ~/heroku/hello-heroku $ git commit -m "counter edition"
    [master 925a6e3] counter edition
     1 file changed, 4 insertions(+), 1 deletion(-)
    ~/heroku/hello-heroku $ git push heroku master
    Counting objects: 5, done.
    Delta compression using up to 2 threads.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 378 bytes | 0 bytes/s, done.
    Total 3 (delta 2), reused 0 (delta 0)
    remote: Compressing source files... done.
    remote: Building source:
    (途中略)
    remote: -----> Discovering process types
    remote:        Procfile declares types -> web
    remote: 
    remote: -----> Compressing... done, 6.1MB
    remote: -----> Launching... done, v5
    remote:        https://whispering-lake-8767.herokuapp.com/ deployed to Heroku
    remote: 
    remote: Verifying deploy.... done.
    To https://git.heroku.com/whispering-lake-8767.git
       760e08d..925a6e3  master -> master
    ~/heroku/hello-heroku $ heroku open
    Opening whispering-lake-8767... done

     

    ブラウザが開いたのでリロードしてみます。

    Screenshot-Mozilla Firefox-4

    やはりリロードするたびにカウンタが増えます。しばらくは実行環境が維持されるようです。確か、何時間かで実行環境が消える(表現が適切ではないかも)と書いてあったので永続的な値はデータベースに頼るべきなのでしょうが、実験レベルであれば変数でもいいのかもしれません。

    15.GETメソッドのパラメータ渡しをみてみる

    hello.jsを以下のように改変。
    ここの記事を参考にさせてもらいました。request.param(パラメータ名)で容易に取得できるようです。他にもExpressの使い方でいろいろ参考になる記載がたくさんありますので、後でじっくり読ませてもらいたいと思います。

    var express = require("express");
    var app = express();
    //app.use(express.logger());
    var count = 1;
    
    app.get('/', function(request, response) {
        console.log(request.query); // for logging
        var username = request.param('username');
    	response.send('Hello wonderful Heroku world! <BR />'
          + 'あなたのアクセスは' + count + '回目です<BR />'
          + username );
        count++;
    })
    
    var port = process.env.PORT || 5000;
    app.listen(port, function() {
    	console.log("Listening on " + port);
    });
    

     

    ローカルでテスト。

    ~/heroku/hello-heroku $ foreman start
    15:28:14 web.1  | started with pid 6050
    15:28:14 web.1  | Listening on 5000
    15:30:08 web.1  | {}
    15:30:08 web.1  | Thu, 23 Jul 2015 06:30:08 GMT express deprecated req.param(name): Use req.params, req.body, or req.query instead at hello.js:8:28
    15:30:57 web.1  | { username: 'tomono' }
    15:31:39 web.1  | { username: 'ともの' }
    

     

    1回目はパラメータなし、2回目以降はパラメータ付きでテストしました。下記は2回目、3回目のスクリーンショットです。

    Screenshot-Mozilla Firefox-5

    Screenshot-Mozilla Firefox-6

     

    日本語(Unicodeでしょう)も大丈夫な感じですね。
    herokuにデプロイして試してみます。

    ~/heroku/hello-heroku $ git add .
    ~/heroku/hello-heroku $ git commit -m "parameter test edtion"
    [master 043fb81] parameter test edtion
     1 file changed, 4 insertions(+), 1 deletion(-)
    ~/heroku/hello-heroku $ git push heroku master
    Counting objects: 5, done.
      (途中略)
    To https://git.heroku.com/whispering-lake-8767.git
       925a6e3..043fb81  master -> master
    ~/heroku/hello-heroku $ heroku open
    Opening whispering-lake-8767... done

     

    アクセスして試してみます。

    Screenshot-Mozilla Firefox-7

    Screenshot-Mozilla Firefox-8

    Screenshot-Mozilla Firefox-9

    無事にローカルと同様に動作しました。GETメソッドでのパラメータ渡しも簡単にできそうです。


    コメントをどうぞ(日本語のみ/Only in Japanese)

    日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)