Go PR

【Go言語(Golang)】WebフレームワークのFiberでファイルをアップロードするWebアプリをつくる

GoのWebフレームワークFiber
記事内に商品プロモーションを含む場合があります

こんにちは。現役エンジニアの”はやぶさ”@Cpp_Learningです。

GoのWebフレームワーク Fiber を活用した簡単なWebアプリの作り方をソースコード付きで紹介します

今回つくるWebアプリ -ファイルアップローダ-

今回つくるWebアプリは、クライアント側にある任意のファイルをサーバー側に保存するファイルアップローダです。

クライアントサーバーシステム

WebフレームワークFiberとは

Fiberとは、Express にインスパイアされたWebフレームワークで、Go 最速のHTTPエンジンである Fasthttp で作られています。

Fiber is inspired by Express, the most popular web framework on the Internet. We combined the ease of Express and raw performance of Go.

引用元:Fiber|GitHub

Express のような使い易さと Go のパフォーマンスを両立させたフレームワークのようです。

Go標準の net/http パッケージは強力で、簡単なWebアプリを作るのに十分な機能を備えています。一方で、魅力的なWebフレームワークが数多くの存在するので、開発対象やチームの規模に合わせて選択すれば良いと思います。

Fiberの魅力
スポンサーリンク

実践 FiberでWebアプリ開発

Go開発環境にDockerを使っています。環境構築方法については、以下の記事で説明しています。

WSL2-Docker-VSCode-Golang
【Go言語(Golang)】WSL2とDockerで最高のGo開発環境をつくるWSL2 + Docker + VS Code の Remote – Containers のGo開発環境の構築方法とコンテナを活用したWebアプリ開発の簡単な実践チュートリアルについて解説した記事です。...

プロジェクトフォルダの構成は以下の通りです。

tmpフォルダの中身がアップロードされたファイルです。

go.mod -バージョン管理-

go.mod は以下の通りです。

以下のコマンドで Go のバージョン確認ができます。

go version

今回は以下が表示されました。

go version go1.16.6 linux/amd64

FiberでつくるWebアプリ main.go

サンプルの Upload Single File をベースにして作った main.go が以下です。

コメント多めの分かり易いコードに仕上げました。

index.html

index.html については、echoのサンプルを参考にしました。

自作Webアプリの動作確認

以下のコマンドでWebアプリを起動します。

go run main.go

起動に成功すると、ターミナル上に下図が表示されます。

goのWebフレームワークfiberでWebアプリをつくる

適当なブラウザから http://127.0.0.1:8080/ にアクセスすれば、下図が表示されます。

goのWebフレームワークfiberでファイルアップローダをつくる

「ファイルを選択」をクリックすると、アップロードするファイルを選択できます。

goのWebフレームワークfiberでWebアプリをつくる

「Submit」をクリックすると選択したファイルがサーバにアップロードされます。

goのWebフレームワークfiberでWebアプリをつくる

POSTリクエストに応じて、サーバー側のtmpフォルダにファイルを保存するとともに、下図のレスポンス(「Upload:ファイル名」の文字列)を返します。

goのWebフレームワークfiberでWebアプリをつくる
はやぶさ
はやぶさ
Fiber とても使い易かったです!サクッとWebアプリつくれました

まとめ

GoのWebフレームワーク Fiber を活用した簡単なWebアプリ(ファイルアップローダ)の作り方をソースコード付きで紹介しました

クライアントサーバーシステム

Fiber すごく良かったので、是非使ってみてください。

本記事がGoでWebアプリを作りたい人Webフレームワークの選択に悩んでいる人の参考になれば嬉しいです。

はやぶさ
はやぶさ
以下 Go言語の本紹介。最初の一冊は「みんなのGo言語」がオススメです。

PICK UP BOOKS

  • 数理モデル入門
    数理モデル
  • Jetoson Nano 超入門
    Jetoson Nano
  • 図解速習DEEP LEARNING
    DEEP LEARNING
  • Pythonによる因果分析
    Python