kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

「Go言語によるWebアプリケーション開発」6章 REST形式でデータや機能を公開する

Go言語によるWebアプリケーション開発

Go言語によるWebアプリケーション開発

6章は、5章で作成した投票システムのGUIをWEBページとして作成する章になっています。

REST形式でデータを作成できるようにし、WEBページ表示時にAPIとして利用して表示をおこなっています。

WEBページ表示部分については、グラフ表示になっており、わかりやすい表示を工夫しているのがいいですね。ただWEBについては色々作ってきているので、ざっくりとした理解で問題ないと思っているので、RESTを作っているgo言語の部分が今回の勉強になった部分です。

かなり流して読んでいます。

ラップされたハンドラ関数

HTTPハンドラの関数を大量に書くなぁ。と思っていたら、ラップにラップをして拡張している仕組みを書いていて、なるほど。と思ってしまいました。

認証とか、CORS許可とか機能の追加をラップで書けるのは、いいですね。

この考え方で自分で機能を作ることができる気がしませんが、色々と実装するといつか出会うことがあるかもしれないので、心に止めておきます。

REST形式

個人的にREST形式で提供したい場合は、たぶんフレームワークを使うと思う。どこまで理解したいかによりますが、世の中でのルールに合わせたように作れるか心配なため、実績があるライブラリを使う可能性が高いと思います。

現状でREST形式で外部に公開するという機会がないため、そこまでの必要性がないため流して読みました。

RESTのAPIを提供しているところを使う機会もなかったりします。

便利そうな仕組みだとは思っていましたが、名称を考えなくていい仕組みかな。ぐらいの認識しかないから、あまり書かないですね。HTTPメソッドとかGETとPOSTだけしか使わないからわからないです。

確かPUTかDELETEが実装されていないブラウザとかあったんだっけ??とか曖昧な知識で、色々な対応を考えた時に確実性を考慮してRESTでなく、WEBAPIとして提供することが多いです。

サービスとしては、APIが提供されている。ということが重要だと思っています。(実装はなんでもいいんだよ。。。逃げかな。。。)

シンプルなWebサーバー

apacheとかnginxとかなくても、go言語のシンプルなHTTPサーバーをみると驚きますね。

PHPもビルトインサーバーで動作させることができますが、PHP自体に含まれている機能とみると「へぇー」ぐらいでしたが、go言語のソースコードで10行ぐらいで動作されると、なぜか感心してしまいました。

PHP好きなんですが、本番と同じ環境作って開発してたからNginxにお任せで、ビルトインサーバー使ってなかったですね。Nginxでルーティングしてたから使えないか。

作っているサービスの規模が違うので、しょうがないですね。

複雑になるときっとgoのHTTPサーバーにも不満がでるでしょうが、そこまでやっていないので美化されている気がします。

実は5章と6章自体は、実行せずに仕組みの導入とビルドできる部分までしかやっていません。

理解できていない部分が多すぎて、実行と合わせて理解したかったためとにかく書く方向で進めていました。

これから復習する予定です。

次は「ランダムなおすすめを提示するWebサービス」です。