Amazon Linux2 + AWS RDS(mysql)でgormを使って簡単なCRUDなAPIを実装するテスト
ユーザー名、パスワードを扱うシンプルなAPIです。
CREATE DATABASE test DEFAULT CHARACTER SET utf8;
create table test.member(id int primary key, name varchar(8),password varchar(100));
ALTER TABLE test.member MODIFY id INT AUTO_INCREMENT;
mkcertなどを使ってSSL証明書を作成してください。
OS側の環境変数を定義してください。export API_USER=xxxx
みたいにして定義します。
変数名 | 定義内容 |
---|---|
API_USER | RDSのユーザー名 |
API_PASS | RDSのパスワード |
API_ADDRESS | RDSのDNS名 |
API_SALT | パスワード暗号化用文字列 |
以下みたいに定義するといいでしょう。
export API_USER=admin
export API_PASS=xxxx
export API_ADDRESS=xxxx.xxxx.us-east-2.rds.amazonaws.com
export API_SALT=api12345
注)APT_SALTはパスワード文字列暗号化に使う文字列です。8~16桁の英数字を指定できます。
リポジトリをcloneするとか、zipを置くとかでコードを配置してください。
go build api.go
で、go.modのモジュールが組み込まれて動くと思う。
ESCキーで終了します。
起動時に引数から与えるオプションがあります。
オプション名 | 定義内容 |
---|---|
cert | SSL証明書の公開鍵ファイル |
key | SSL証明書の秘密鍵ファイル |
port | APIを起動するポート番号 |
debug | デバッグモード |
以下みたいに使います。
./api -cert=test.pem -key=test-key.pem -debug
以下APIがあります。
API名 | JSON名 | 機能 |
---|---|---|
raw | raw | 生SQLを投げ込みます |
find | search | ユーザー名検索します |
create | name / password | アカウントを作成します |
read | id | 該当ID番号のユーザーを表示します |
update | id / name / password | アカウント情報をアップデートします |
delete | id | 該当ID番号のユーザーを消します |
auth | name / password | ユーザー名、パスワードで認証します |
以下みたいに使います。
curl -k -H "Content-Type: application/json" -X POST -d '{"raw":" SELECT * FROM test.member;"}' https://localhost:8080/raw
curl -k -H "Content-Type: application/json" -X POST -d '{"search":"user3"}' https://localhost:8080/find
curl -k -H "Content-Type: application/json" -X POST -d '{"name":"user2", "password": "pass"}' https://localhost:8080/create
curl -k -H "Content-Type: application/json" -X POST -d '{"id":"8"}' https://localhost:8080/read
curl -k -H "Content-Type: application/json" -X POST -d '{"id": "8", "name":"user2", "password": "pass"}' https://localhost:8080/update
curl -k -H "Content-Type: application/json" -X POST -d '{"id":1}' https://localhost:8080/delete
curl -k -H "Content-Type: application/json" -X POST -d '{"name":"user2", "password": "pass"}' https://localhost:8080/auth
既存のDBべったりで書いてしまったのでそのうち修正しないと。。
Visual Studio Code で編集中のテストコードを実行する (Golang編) VS CodeのGo言語テストコード生成ツールを使ってみたらめちゃくちゃ便利だった話とか