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サーバーに情報を送信することが可能になりました。
次回は、この昨日を利用してアンケートフォームを作成します。