REST APIからpostgresへ画像のアップロードと取得を実装したいのですが、APIの設計についてこれが正しいのか分からなかったのでアドバイスをいただきたいです。
現在の案としてですが、以下のような実装を考えています
- 対象のDBテーブルにbyteaの型のカラム “picture” を作成して、そこに画像のバイナリデータを格納する。
- GETのAPIのレスポンスに “picture” を追加してそのバイナリデータをbase64にエンコードして返す
DB
Field | Type | Format | Remarks |
---|---|---|---|
id | bigserial | 連番 | サロゲートキー |
name | varchar(50) | 文字列 | 名前 |
picture | bytea | バイナリ列 | 写真 |
POST users
Request Body:
json
1 2{ 3 "name": "example", 4 "picture": "exampleimage.jpg", 5} 6
JSON key | Type | Size | Required | Format | Note |
---|---|---|---|---|---|
name | String | 500 | yes | text | name for the user |
picture | String | no | base64 | picture |
GET users
Response on Success
json
1 2{ 3 "id": 123, 4 "name": "example", 5 "picture": "exampleimage.jpg", 6 7} 8
JSON key | Type | Size | Required | Format | Note |
---|---|---|---|---|---|
id | String | 30 | yes | integer | id |
name | String | 500 | yes | text | name for the user |
picture | String | no | base64 | picture |
もしくは、画像自体はS3に保管し、DBにはそのURLのみ保存するのが良いのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。