※計画中の資料ですので、内容が変わる事があります。
- 全体で50分で達成することを目標とします
- 各テーブルでのサポーター(3人)
Go言語では非常に簡単にWebAPIサーバーを構築する事ができます。
基本的にはnet/http
パッケージを利用し、他にも有志によって開発された外部パッケージを使いながら、
色んな機能を持ったAPIサーバーを構築していきます。
ここでは、課題を通していくつかの機能を実装してもらいます。
- Go言語の構文に慣れる事
- 課題を通してGo言語のWebAPIサーバーの実装方法を知ること
APIサーバーとは?
http(s)://から始まるのURLでアクセスされるリモートに存在するマシンです。
本来Webサーバーと呼ばれるマシンは静的、または動的なWebページを返しますが、
バックエンドにAPIサーバーを用意して、RESTと呼ばれる形式でJSONデータをやり取りしてWebページを表示するページも多く存在します。
今回作るAPIサーバーはまさにそのリクエストに応じてJSONデータを返したりする、WebAPIサーバーです。
コードを書いてコンパイルすると、http://localhost:8080 でアクセスできるようにして開発を進めていきます。
- GET localhost:8080/fizzbuzz/:num
- 1~:numまでの数値で3で割り切れる場合
Fizz
、5で割り切れる場合Buzz
、両者で割り切れる場合はFizzBuzz!
と出力してみましょう。 - 整数・正数でないパラメータが渡された場合400エラーにしましょう!
- julienschmidt/httprouterを使いましょう
外部パッケージをインストールする
$ go get github.com/julienschmidt/httprouter
外部パッケージのドキュメントを見る
$ godoc github.com/julienschmidt/httprouter
- GET localhost:8080/profile/:name
- BobとAliceならプロフィールをJSON形式で返しましょう、それ以外は404エラーにしましょう
- BobとAliceのプロフィールは以下です
Name: Bob
Age: 25
Gender: Man
Favorite Foods: Hamburger, Cookie, Chocolate
Name: Alice
Age: 24
Gender: Woman
Favorite Foods: Apple, Orange, Melon
- POST localhost:8080/profile
- データベースなんてありません!
- 同じ名前のユーザーは登録してはいけません、400エラーを返しましょう
- リクエストで受け付けるBodyパラメーターは以下です
name string
age int
gender string
favorite_foods: []string
$ curl -XPOST -d "{\"name\": \"yukpiz\", \"age\": 28, \"gender\": \"Man\", \"favorite_foods\": [\"Curry\"]}" http://localhost:8080/profile
- GET localhost:8080/profile/:name
- 課題3で201が返るようになったはずです
- でも保存されているプロフィールを見ることができません。
- 課題2と課題3を組み合わせて保存したプロフィールを取得してみましょう
- プロフィール取得API(GET)を呼び出すAPIクライアント
- プロフィール保存API(POST)を呼び出すAPIクライアント
- flagパッケージ
- 以下のように呼び出せるようにしてみましょう
$ go run main.go -name yukpiz
$ go run main.go -name yukpiz -age 28 -gender Man -favorite-foods "Apple Orange"
- html/templateパッケージ
- 以下のようなページ構成でWebページを返すサーバーを立ててみましょう
Indexページ
Aliceプロフィールページ
Bobプロフィールページ