Golang + API GatewayでCRUDを実装してみた

AWS LambdaがGolangを正式サポートしてから暫く経ちました。
Serverless FrameworkもGolangでの実装をサポートしたようなので、タイトルにあるようにAPI Gatewayを使用したCRUDAPIを作成してみました。

Todoを登録・削除・参照するAPIのサンプルとなります。
先にも書きましたが、Serverless Framework、API Gateway + Lambda、データの格納先にはDynamoDbを使用します。

こちらが今回書いたソースです。
GitHub - SrcHndWng/go-todo-sample-api-gateway at v1.0.0


以下、今回作成したモノの備忘録?です。

URL構成について

APIのURL構成については、Serverless FrameworkのAPI Gatewayのサンプルを参考にしました。
examples/serverless.yml at master · serverless/examples · GitHub

mainとHandlerについて

GolangAPI Gateway + Lambdaを実装する場合、mainはHanderを呼び出していて、HandlerはWebサーバを起動しているようです。
なので、Handler内でリクエストのメソッドの種類とパスを判定し、処理を切り替えてみました。

テストについて

テストについては、現時点ではDynamoDbの値を直接参照・更新しています。(動作確認用に作っただけなので・・・)

データの採番について

DynamoDbのデータの採番については、テーブル内のデータ数 + 1 をしています。(これも実案件では採番テーブルなどで管理すべきかと思います・・・)