プログラミング奮闘記

難しいと評判!初心者がN予備校でプログラミングを学んだ感想と備忘録!
No.26:PSOTメソッド

N予備校 プログラミングコース 第26回

あなたは2019年の目標って立てましたか?
どんな目標を立てたか覚えていますか?

私は2018年末に2019年の目標を立てました。
その一つにプログラミングを学び仕事として使えるようにすることをあげました。
そして、思い立ったが吉日と「N予備校のプログラミングコース」を申し込みました。

そして受講と同時に自身の振替と、これから始めようと考えている人の参考になればとブログを書き始めました。
今回ブログの移設にともない、再度そのブログを読み返しながら、今思うことを加えて記載していきたいと思います。

また私が受講したのは【2018年度】で、現在公開されている【2019年度】との違いについても書いていきたいと思います。

このブログは、初心者が学びながら書いているため、間違っている場合があります。
分かり次第修正していくつもりです。

そのあたりも含め楽しんでいただければと思います。 

最後に進めていてわからなかったところや気になったところをまとめています。

プログラミング入門 webアプリコース 第26回

前回までに、Webサービスを提供するうえで必要な、HTTPサーバーを利用したプログラミングとログの出力について学びました。
今回は、HTTPメソッドについて学びます。
HTTPメソッドとは、クライアント(利用者)がサーバーへ送信する要求のことです。

  • 今回の内容まとめ(第3章 13)
    ・HTTPメソッドについて

  • 今回の目標
    HTTPメソッドについて学び、POSTメソッドを実装する。

  • 今回新しく扱っているコマンド等
    ・switch文
    ・concat関数
    ・String関数

HTTPメソッドについて

HTTP1.1には以下の8種類のリクエストがあります。この8種類のうちの4つはCRUDに対応しています。
今回はこの中からPOSTメソッドを実装します・

  • GET  :Read  ・・・データの要求
  • POST  :Create   ・・・データの追加
  • PUT  :Update/Create・・・データの更新・追加
  • DELETE:Delete・・・データの削除
  • HEAD・・・ヘッダ情報の要求
  • OPTIONS,・・・オプションの要求
  • TRACE・・・情報経路の要求
  • CONNECT・・・接続の要求
     

POSTメソッドの実装

POSTは、CRUDのC(Create)に対応するメソッドでデータの追加を行います。
掲示板や動画へのコメントを投稿等がPOSTメソッドになります。
今回POSTメソッドを実装するのに、switch文という制御構文、concat関数、String関数を用います。

switch文

switch文は、case, break, defalt, returnから構成されます。
if文でも同じような処理が可能ですが、if文では分岐が多くなり読みにくくなるためswitch文が使われます。

switch (n) {
   case 1:
     // n=1 の時に実行する処理を指定
     break; // ここで処理を中断
   case 2:
     // n=2 の時に実行する処理を指定
     break; // ここで処理を中断
   default:
     break; // nがどの値にも一致しなかったときに何も実行せずに終了する
}
2~3行目で、n=1の時に実行する処理を指定します。
4行目で、n=1の処理が終了次第処理が中断します。
5~6行目で、n=2の時に実行する処理を指定します。
7行目で、n=2の処理が狩猟次第処理が中断します。
8行目で、nが1でも2でもない場合はdefaultで指定された内容が実行されます。

これを用いた例が以下になります。

function ○○(n) {
switch (n) {
case 1:
return ‘ABC’;
case ‘2’:
return ‘abc’;
default:
console.log(‘123′);
break;
}
return ”;
}
1行目で、これからの関数の名前を○○と指定しています。
関数○○の内容を2~11行目で設定しています。
2行目からがswitch文になります。
3~4行目、5~6行目でそれぞれn=1の時に’ABC’を、n=2の時に’abc’を表示するように設定しています。
7~8行目で、nが1でも2でもない場合に’123’と表示する様に設定し、
10行目で、switch文が終了した後に’ ‘と表示するように設定しています。

この結果、次のようにコマンドを実行します。

○○(1);
○○(2);
○○(3);

上記の結果が以下になります。

‘ABC’
‘abc’
‘123’
‘ ‘

concat関数

2つ以上の配列を結合して新しい配列を作るのに使うのがconcat関数です。

var sequence1 = [‘あ’, ‘い’];
var sequence2 = [‘う’, ‘え’];
var sequence3 = [‘お’, ‘順’];
var result = sequence1.concat(sequence2, sequence3);
console.log(result);
1~3行目で、sequence1~3にそれぞれ[あ,い] [う,え] [お,順]という配列を設定し

4行目で、sequence1に、sequence2,3を結合して新しい配列を作り、それをresultと名付けています。

5行目で、resultの内容を表示します。

これを実行すると

[ ‘あ’, ‘い’, ‘う’, ‘え’, ‘お’, ‘順’ ]
と表示されます。

String

String関数で数字などの文字でないものを文字列へと変換します。

これらを使用して作成したPOSTメソッドが以下になります。

switch (req.method) {
        case ‘GET’:
            res.write(‘GET ‘ + req.url);
            break;
        case ‘POST’:
            res.write(‘POST ‘ + req.url);
            let body = [];
            req.on(‘data’, (chunk) => {
                body.push(chunk);           
            }).on(‘end’, () => {
                body = Buffer.concat(body).toString();
                console.info(‘[‘ + now + ‘] Data posted: ‘ + body);
            });
            break;
        default:
            break;
    }
1行目で、リクエストがあった時の変数reqから、HTTPメソッドの文字列(GETやPOSTなど)を取得し、その内容をreq.methodとします。

2-4行目で、req.methodがGETメソッドであれば、req.urlでそのリクエストのURLを取得して、「GET https://・・・」と表示します。

5-6行目で、req.methodがPOSTメソッドなら、req.urlでそのリクエストURLを取得して、「POST https://・・・」と表示します。

8-9行目では、データを受け取るというdataイベントが発生した際に、そのデータを細切れな状態で取得しそれをchunk変数に適応します。そのchunk変数の内容をbody配列に追加します。

10-11行目で、すべてのデータを受信するendイベントが発生した際に、取得したbody配列をすべてつなげて文字列に変換します。

12行目で、この文字列データを、infoログとして出力します。今回は、『[日付] Data posted:bodyの内容』といった形で表示されます。 


今回はHTTPメソッドについて学び、POSTメソッドを実装しました。
これにより、HTTPサーバーに情報を送信することが可能になりました。
次回は、この昨日を利用してアンケートフォームを作成します。 

ABOUT ME
GoodAmbition
オンライン塾経営者(大阪大学工学部出身の元開発技術者) 自身も家庭教師や塾講師として働きつつ、後輩の育成やオンライン塾を経営しています。 私自身も約10年にわたり家庭教師や塾講師として100人以上の受験生と向き合ってきました。 色々な学生、保護者の方とかかわる中でよく質問される内容や、受験に必要な内容について書いています。 独学で頑張っている人たちへ勉強計画や悩み相談なども受け付けていますので気軽にお問い合わせください。 就職活動や資格の勉強などで悩んでいる方もご連絡ください。 教育・就活、書籍、食べ歩きに関するお話がメインです。 最近取り組んでいること プログラミング、筋トレ、マラソン、ライティングスキル向上etc. 苦手なことを克服しようと頑張っています。