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サーバを動かしてみようと思います。 前半はとにかく動かすだけ動かして、後半にどのような流れで実行されているのかコードを見ていこうと思います。
【環境】
【前提】
- インストール - The Go Programming Language を参考にGoのインストール、パスを通すところまで完了している。
- PostgreSQLがインストール済み。(MySQLなども使えるようですが、デフォルトがPostgreSQLなので今回はこれを使用)
【手順】
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を実行します。
- URL:http://localhost:8080/v1/auth
- リクエストメソッド:POST
- Body:
{ "username": "demo", "password": "pass" }
Bodyは「JSON」形式です。
これを実行すると、レスポンスで「token」が返ってきますので、以降はこの「token」を使用してAPIを実行します。
「token」を設定しないと、認証エラーとなります。
では、artist情報を取得します。以下のAPIを実行します。
- URL:http://localhost:8080/v1/artists
- リクエストメソッド:GET
- Header:Key = Authorization, Value = Bearer
, Key = Content-Type, Value = application/json
{ "page": 1, "per_page": 100, "page_count": 1, "total_count": 1, "items": [ { "id": 1, "name": "小泉さん" } ] }
「小泉さん」のレスポンスが返ってきていたら成功です。
5. 登録API実行
artistにデータ登録するAPIも実行してみます。
- URL:http://localhost:8080/v1/artists
- リクエストメソッド:POST
- Header:Key = Authorization, Value = Bearer
, Key = Content-Type, Value = application/json - Body:
{ "name": "大澤さん" }
Bodyは「JSON」形式です。ステータス「200」が返却されたら成功です。
再度、artist情報を取得するAPIを実行すると、今度は「小泉さん」「大澤さん」の2データが取得できています。
更新、削除のAPIも用意されています。
あとは既存のコードをベースに、必要なAPIを作ればOKですね。なんとも簡単にできてしまいました。
次回は「golang-restful-starter-kit」のコードを追って、どのようにAPIが実行されているのか見ていこうと思います。