見出し画像

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教材をまとめています。

※本ページではアフィリエイトリンク(PR)が含まれています


この記事が参加している募集

この経験に学べ

この記事が気に入ったらサポートをしてみませんか?