Skip to content
This repository has been archived by the owner on Jun 20, 2024. It is now read-only.

ストレージへのアップロード、取得APIについての検討 #81

Open
marihachi opened this issue Aug 15, 2017 · 8 comments

Comments

@marihachi
Copy link
Member

marihachi commented Aug 15, 2017

静止画、動画、音声
細かなエンドポイント設計は後々

とりあえずは、静止画のアップロードに絞って検討していきます

@marihachi marihachi changed the title メディアのアップロード、取得API ストレージへのアップロード、取得API Sep 11, 2017
@marihachi
Copy link
Member Author

marihachi commented Oct 8, 2017

ストレージのリソースを

  • /storages/:storageId
  • /users/:userId/storage

どちらにおくかという問題で、
前者の /storages/:storageId に置くのであれば、user以外のエンティティがストレージを持つことになったとき(例えば、groupなど)に、そのstorageIdが user と group のどちらが所有するものかを判断する必要が出てくきて実装が煩雑になると予想できる。
そのため、後者の /users/:userId/storage に置く方針でいくことになりました。

追記(2018/2/3)
これでも、userエンティティとそれ以外のエンティティがそれぞれストレージを持つことになったとして、両者ともDBのstorageFilesコレクションに保存されるので結局creator.type ("user" や "group")を保存することにはなるんだけどね。
ファイルはファイルなので、作成者の種類(user,group)に関係なく統一して扱われる方が、取り出し操作もしやすいかなという考えのもとでの判断です。

@marihachi
Copy link
Member Author

marihachi commented Oct 9, 2017

エンドポイントを模索中
以下のような感じになりそう

操作 エンドポイント 備考
ストレージの状態取得 GET /users/:userId/storage #95
新規作成 POST /users/:userId/storage/files #90
ファイル一覧の取得 GET /users/:userId/storage/files #91 フィルター指定可能
対象ファイルの取得 GET /users/:userId/storage/files/:file_id #92
対象ファイルの削除 DELETE /users/:userId/storage/files/:file_id #93

ファイルデータはbase64にエンコードしてアップロードします
(2018/2/3 編集済み)

@marihachi
Copy link
Member Author

marihachi commented Oct 9, 2017

ストレージの残りの容量を取得したいときなどに今のエンドポイント設計だと整合が取れないな
ファイルに関する操作のベースを /users/:userId/storage/files に変更しようかな
それでストレージの状態取得、ストレージ自身に関する情報取得は GET /users/:userId/storage でできるように

@marihachi marihachi changed the title ストレージへのアップロード、取得API ストレージへのアップロード、取得APIについての検討 Oct 9, 2017
@karamelle
Copy link

これ投稿とかに紐付けたとき、投稿からファイル情報を取得するときにどのエンドポイント叩くといいのか気になる
投稿のデータにすべて含むので問題ないということならいいのだけれど

@marihachi
Copy link
Member Author

ポストにはファイルid(もしくは ファイルid+ファイルデータ)を持たせると思う。
任意のタイミングで紐付いたファイルを取得したいときには、
GET /users/(ユーザーid)/storage/files/(ファイルid)
にアクセスすることになるかと思うよ

事前にポストエンティティにファイルデータを埋め込んで返すかどうかについては要検討だけどね

@marihachi
Copy link
Member Author

現時点で考えているファイルへのアクセス権:

  • public: 全体公開
  • specific: フォロワーであるか、ユーザーを個別指定 などをOR条件で設定
  • private: 非公開

@marihachi
Copy link
Member Author

ファイルのアクセス権の設計を変更
specificをprivateに統合して、publicとprivateの2種類にします。

@marihachi
Copy link
Member Author

marihachi commented Feb 12, 2018

  • base64エンコードされたファイルのアップロードと取得
  • 公開範囲をprivate(非公開)として限定公開するユーザーを指定した時に、所有者と指定したユーザーがアクセスできるか、逆に他のユーザーがアクセス出来ないか

この2つが確認できたので、結構良い所まで来ています。

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants