【勉強メモ】画像アップロードAPIコーディング

個人で画像投稿系のwebサービスを作っており、今日は画像アップロード用のAPIのコーディングを進めました。 以下簡単なメモ。

APIの処理としては下記のような感じで設計しようと思ってます。 まだまだ設計に粗いところあると思いますが、まずは動くもの作ることを大事にして、想定通り動いたあとでリファクタリングかけていきます。

画像アップロードAPIの処理の流れ

フロントエンドから画像データとその他のパラメータ(タイトル、ユーザーIDなど)をmultipart/form-dataで受け取る

画像データのファイル名と同じ名前のファイルをtmpディレクトリに新規作成(Goではビルドイン関数のos.Create()でファイル作成可能)

引数で受け取った画像データをtmpディレクトリに作成したファイルにコピー

tmpディレクトリのファイルをS3にアップロード用の関数に渡す

S3にアップロードされる(AWS SDKの細かい処理はこの記事では割愛)

S3にアップロード成功したら処理続行、失敗だったらフロントにエラーを返す。

S3にアップロードしたオブジェクトのURLをAPIの処理に使えるように変数に格納する

引数のユーザーID、タイトルなどを取得する

ユーザーID、タイトル、S3のオブジェクトURLをDBに格納する

フロントエンドに処理結果を返す

コーディングで苦戦した箇所

  • GoのEchoフレームワークjsonで受け取った引数を構造体に格納する際はBind関数が使えるが、multipart/form-dataの場合はFormValue("引数名")で取得する
userID := c.FormValue("user_id")

echo.labstack.com

qiita.com