Open5

個人用簡易APIサーバー作成記録

tenkohtenkoh
  • CLIでやっている処理を刷新して、携帯電話からでも実行できるようにしたい
  • AWS Lambda なり、Cloudflare Workers なり、サーバーレスな仕組みでやってコストを抑えたい
  • Goが使いたいので、Lambdaでやってみよう
  • RDSにお金をかけたくないし、応答性も必要ないのでS3にJSONを保存してデータを永続化しよう
  • ホスティングは Lambda の Function URLs が使えないかなぁ?
  • iPhoneのショートカットアプリとか、そのあたりからHTTPリクエストを投げることを考えると認証はかけづらい
  • Function URLs の認証タイプNONEでいっとくのは、認証はアプリケーションレベルで何かやるにしても、DDoSとか怖い
tenkohtenkoh

Lambda統合のAPI Gatewayの利用も考えたが、Lambdaからのレスポンス形式が不正というエラーが出てうまくいかず。形式を確認したが、正しい形式に見えたのでなんだったのやら。深追いはしていない。

この辺りのレスポンスは、こちらのモジュールにお任せしてしまっている。余力があれば調査して何か貢献したいところ。
https://github.com/fujiwara/ridge

tenkohtenkoh

iPhoneのショートカットアプリには、地味にハッシュを計算する機能もあるので、リクエストボディを文字列で持っておけば計算ができる。

ただし「リストから選択」などを使って複数項目のリスト(配列)を作り、それをPayloadにいれる場合(以下の例だとusersのこと)、これを文字列にするのは地味に大変。

{"date":"2024-11-18","users":["Alice","Bob"]}

「辞書」という機能がショートカットアプリにはあり、テキストや配列を各キーに対する値として設定できるが、リストを無造作に突っ込むと"Alice\nBob"のような形式になる。

そこで「各項目を繰り返し」を使い、次のように処置する必要あり。

  1. --ここから繰り返し--
  2. 各アイテムをダブルクオーテーションで囲む
  3. ダブルクオーテーションで囲った後の文字列を変数に格納(変数に追加で格納していくと勝手にリストにされる)
  4. --ここまで繰り返し--
  5. 変数をカンマ区切りで結合
  6. 「テキスト」を使って、無理やりJSON形式のペイロードを文字列として作成
  7. 「ハッシュ」を使って、上記の文字列のSHA256ハッシュを計算