golang Beegoフレームワークの使い方 簡単にAPIサーバーを構築する
今回はgolangのBeegoフレームワークの使い方について解説していきます。
Beegoとは
BeegoはGo言語用のオープンソースのWebフレームワークです。
MVCアーキテクチャに基づいて構築されており、Go言語のシンプルさと効率性を活かしたWebアプリケーションの開発が可能となっています。
HUAWEI社などの多くの中国系企業のサービスに採用されていることもあり、中国で一番人気を集めています。
Beegoの特徴やメリットについて以下の記事で詳しく解説しています。
Beegoのインストール
Beegoのインストールを行うには以下のコマンドを実施します。
go get -u github.com/beego/beego/v2
go get -u github.com/beego/bee/v2
Beegoアプリケーションの作成
Beegoアプリケーションを作成するにはbeeツールを使用します。新しいプロジェクトを作成するには、以下のコマンドを実行します。
bee new myapp
Webサーバーの作成
BeegoはMVCパターンに従います。コントローラはウェブリクエストの処理を担当します。
controllersディレクトリにdefault.goというファイルを作ります。
package controllers
import (
"github.com/beego/beego/v2/server/web"
)
type MainController struct {
web.Controller
}
func (c *MainController) Get() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "index.tpl"
}
次にroutersディレクトリにrouter.goでURLパターンとコントローラのアクションのマッピングを設定します。
package routers
import (
"myapp/controllers"
"github.com/beego/beego/v2/server/web"
)
func init() {
web.Router("/", &controllers.MainController{})
}
テンプレートファイルをviewsディレクトリのindex.tplとして作成します。
<!DOCTYPE html>
<html>
<head>
<title>{{.Website}}</title>
</head>
<body>
<h1>Hello, {{.Email}}!</h1>
</body>
</html>
アプリケーションの実行
コマンドラインでBeegoアプリケーションを以下のコマンドで実行します。
bee run
ブラウザでhttp://localhost:8080にアクセスするとビューが表示されます。
ORM(オブジェクト関係マッピング)
Beegoには、データベース操作のためのORMモジュールが含まれています。
package main
import (
"github.com/beego/beego/v2/client/orm"
_ "github.com/go-sql-driver/mysql"
)
type User struct {
Id int
Name string `orm:"size(100)"`
}
func init() {
orm.RegisterDataBase("default", "mysql", "user:password@/dbname?charset=utf8")
orm.RegisterModel(new(User))
orm.RunSyncdb("default", false, true)
}
func main() {
o := orm.NewOrm()
user := User{Name: "John"}
id, err := o.Insert(&user)
if err == nil {
fmt.Println("Inserted User ID:", id)
}
user = User{Id: id}
err = o.Read(&user)
}
ミドルウェアの使用
Beegoは、リクエスト処理の前後で実行されるミドルウェアをサポートしています。以下はロギングミドルウェアを実装するサンプルコードです。
package main
import (
"github.com/beego/beego/v2/server/web"
"github.com/beego/beego/v2/server/web/context"
"log"
)
func LogMiddleware(ctx *context.Context) {
log.Printf("Request URL: %s", ctx.Request.URL)
}
func main() {
web.InsertFilter("/*", web.BeforeRouter, LogMiddleware)
web.Router("/", &MainController{})
web.Run()
}
RESTful API
Beegoを使用してRESTful APIを構築することも可能です。
package main
import (
"github.com/beego/beego/v2/server/web"
)
type ApiController struct {
web.Controller
}
func (c *ApiController) Get() {
c.Data["json"] = map[string]string{"message": "Hello, world!"}
c.ServeJSON()
}
func main() {
web.Router("/api", &ApiController{})
web.Run()
}
golangをもっと詳しくなりたい方に
初めてのGo言語
Go言語の入門から応用まではこの一冊で網羅されています。説明も順序立てて説明されており完成度の高い参考書となっています。
詳解Go言語Webアプリケーション開発
こちらはGo言語の基礎知識を得たあとに読むことをすすめる本となっています。ハンズオン形式で手を動かしながら実装をしていくことができるため、実際の開発を意識しながらGo言語を学ぶことができます。
以下の記事では他にも筆者が実際に読んでおすすめしたい本をまとめています。
【Go入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語)
まだGo言語の勉強を始めていない方、全くの初心者の方にはこちらのUdemy教材が最もおすすめです。
この教材ではgolangの基礎について網羅的に学ぶことができます。ただ見て学ぶだけでなく、講座の中でアプリ作成まで行うことで学んだことの理解をさらに深めることができます。
現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発
個人的に最も勉強になったのは「現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発」という教材です。
本格的なレクチャーに入る前に、なぜGoなのか、なぜFintechなのかについて説明されていることで、Goの概念や意味について大枠から理解することができます。
以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。
この記事が気に入ったらサポートをしてみませんか?