go で REST サーバーを構築するにあたり、Echo で GET と POST の動きを確認してみた。
ルーティング
想定する API のルーティング。
GET /
基本形
GET /hello?message=MESSAGE
GET リクエストのクエリーストリングを受け付け、テキストを返す
- GET /api/hello?message=MESSAGE
GET リクエストのクエリーストリングを受け付け、JSONを返す
- POST /api/hello?message=MESSAGE
POST リクエストで JSON を受け付け、JSON を返す
- PUT /api/hello?message=MESSAGE
POST リクエストで JSON を受け付け、JSON を返す
コード
1 | package main |
クエリーストリングを受け取る
c.QueryParam(“パラメーター名”)でクエリーストリングを受け取る
クエリーストリングやPOSTデータで受け取ったパラメーターをJSONに埋め込む
- JSON の内容を構造体で表す
1 | type ResultData struct { |
- リクエスト内のパラメーターを構造体に bind する
1 | result := new(ResultData) |
- レスポンス用の JSON を構築する
1 | return c.JSON(http.StatusOK, map[string]interface{}{"message": result.Message}) |
動作確認
GET /hello
1 | curl http://localhost:8099/ |
GET /hello?message=MESSAGE
1 | curl "httapi/hello?message=Message" |
GET /api/hello?message=MESSAGE
1 | curl "http://localhost:8099/api/hello?message=Message" |
POST /api/hello?message=MESSAGE
1 | curl -X POST -H "Content-Type: application/json" -d '{"message":"HELLOWORLD"}' http://localhost::8099/api/hello |
PUT /api/hello?message=MESSAGE
1 | curl -X PUT -H "Content-Type: application/json" -d '{"message":"HELLOWORLD"}' http://localhost |