えぞてくブログ

ITと北海道と日常と、そんな日々を綴ります

【Go】golang-restful-starter-kitで簡単にREST APIサーバを起動する方法

https://upload.wikimedia.org/wikipedia/commons/2/23/Golang.png

By Renée French (http://reneefrench.blogspot.com) - http://golang.org/doc/gopher/ Recreated from cc-by 3.0 images gopherbw.png + bumper.png (combined like the logo of http://code.google.com/p/go/). File:Go_gopher_mascot_bw.png. Original files by Renee French. (reneefrench.blogspot.com), CC BY-SA 3.0, Link

PHPを使うなら、今後はGolangを使う方が良いと思います。絶対的にバグは減る...! (※個人の意見です)
Golangの良さは、実際にチュートリアルとかやるとすぐに分かると思います。

今回は、「golang-restful-starter-kit」を使って、「簡単に素早く!」REST APIサーバを動かしてみようと思います。 前半はとにかく動かすだけ動かして、後半にどのような流れで実行されているのかコードを見ていこうと思います。

github.com


【環境】

【前提】

【手順】

1. インストール

まずは「golang-restful-starter-kit」をインストールします。にある「Getting Started」に記載があるとおりにコマンドを実行するだけです。超簡単。


2. DBとテーブル作成

次に、PostgreSQLにユーザとDB、テーブルを作成します。DB名とユーザ情報もREADME.mdに書いてあります。

コードを見るとわかりますが、デフォルトではJWT認証の際に固定値で認証しているため、ユーザテーブルはとりあえず不要です。本番で使う場合は、ユーザテーブルを作る必要があります。

また、「artist」というAPIもデフォルトで用意されているので、今回はこのデータをAPI経由で取得することにします。ので、「artist」テーブルを作ってデータを入れておきます。(APIでデータを入れることも可能です)

コマンドラインで実行します。

・ユーザ作成

$ createuser -P postgres
Enter password for new role: postgres <- パスワード入力
Enter it again: postgres <- パスワード入力

・DB作成

$ createdb go_restful -O postgres

・DBが作成されたか確認

$ psql -l

※ 一覧に「go_restful」が表示されていればOK

・テーブル作成

$ psql -U postgres go_restful
go_restful=> CREATE TABLE artist (id SERIAL, name varchar(120), PRIMARY KEY (id));

・テーブルが作成されたか確認

go_restful=> \dt;

※ 一覧に「artist」が表示されていればOK

・テーブルにデータ登録

go_restful=> INSERT INTO artist (name) VALUES ('小泉さん');

・データが登録されたか確認

go_restful=> SELECT * FROM artist;

※ 一覧に「小泉さん」が表示されていればOK


3. サーバ起動

コマンドから実行もできますし、IDE使ってる場合は、「server.go」を右クリックして「Run」をクリックすれば起動します。
今回はコマンドから起動してみます。起動コマンドも GitHub - qiangxue/golang-restful-starter-kit: A RESTful application boilerplate in Go (golang) taking best practices and utilizing best available packages and tools に書いてあります。

$ cd golang-restful-starter-kit
$ go run server.go <- 「make」でもOK
INFO[0000] server 1.0 is started at :8080

これで起動完了です。


4. 取得API実行

APIを実行して、artist情報を取得してみます。自分は www.getpostman.com
を使用しています。
保存も共有もできるので、非常に便利なツールです。

まずはJWT認証をしてトークンを取得する必要があるので、以下のAPIを実行します。

{
    "username": "demo",
    "password": "pass"
}

Bodyは「JSON」形式です。
これを実行すると、レスポンスで「token」が返ってきますので、以降はこの「token」を使用してAPIを実行します。
「token」を設定しないと、認証エラーとなります。

では、artist情報を取得します。以下のAPIを実行します。

{
    "page": 1,
    "per_page": 100,
    "page_count": 1,
    "total_count": 1,
    "items": [
        {
            "id": 1,
            "name": "小泉さん"
        }
    ]
}

「小泉さん」のレスポンスが返ってきていたら成功です。


5. 登録API実行

artistにデータ登録するAPIも実行してみます。

{
    "name": "大澤さん"
}

Bodyは「JSON」形式です。ステータス「200」が返却されたら成功です。
再度、artist情報を取得するAPIを実行すると、今度は「小泉さん」「大澤さん」の2データが取得できています。
更新、削除のAPIも用意されています。


あとは既存のコードをベースに、必要なAPIを作ればOKですね。なんとも簡単にできてしまいました。


次回は「golang-restful-starter-kit」のコードを追って、どのようにAPIが実行されているのか見ていこうと思います。