日時: | 2016-12-10 |
---|---|
作: | @voluntas |
バージョン: | 0.1.1 |
url: | https://voluntas.github.io/ |
使う人のためのまとめではなく、 API 設計に興味がある人向けのまとめなので注意すること
Dropbox の API が v1 から v2 になったタイミングで、REST API を完全に捨てた。
method が POST のみになった。GET で利用される query string を一切使わなくなった。
この仕様を自分なりの視点でまとめておく。
普通の OAuth を利用している。
api.dropboxapi.com にて提供している
content.dropboxapi.com を利用して Dropbox-API-Arg ヘッダーを利用して JSON を送る
content.dropboxapi.com を利用して Dropbox-API-Arg ヘッダーを利用して JSON を送り、JSON の受信は Dropbox-API-Result ヘッダーを利用する。
ISO 8601 の UTC のみに統一している。
一番気になるのが URL (PATH) だろう。
Dropbox はサブドメインを含めて URL にしており、 content.dropboxapi.com と api.dropboxapi.com の二種類を用意している。
content.dropboxapi.com を利用している API を上げてみる。以下に挙げたの以外は全て api.dropboxapi.com を利用している。
- https://content.dropboxapi.com/2/files/download
- https://content.dropboxapi.com/2/files/get_preview
- https://content.dropboxapi.com/2/files/get_thumbnail
- https://content.dropboxapi.com/2/files/upload
- https://content.dropboxapi.com/2/files/upload_session/append_v2
- https://content.dropboxapi.com/2/files/upload_session/finish
- https://content.dropboxapi.com/2/files/upload_session/start
- https://content.dropboxapi.com/2/sharing/get_shared_link_file
ファイルのアップロード時に JSON も含めてアップロードしたい時があるが、その場合 Dropbox API v2 では Dropbox-API-Arg という HTTP ヘッダーに JSON をまるっと指定することで解決している。
ちなみに RFC 的にはヘッダー一つの長さに制限はない。ただ、HTTP サーバが勝手に設定している制限がある。ほとんどの場合は任意で変更できる。
download や取得系は PATH を指定するのに使っている、別に Body でもいいのでは?と思ったりしないでも無いが、 content のサブドメインを利用している場合はヘッダーベースとしているようだ
アップロードはバイナリと分けるのが面倒なのでヘッダーにいれている。
- https://content.dropboxapi.com/2/files/download
- https://content.dropboxapi.com/2/files/get_preview
- https://content.dropboxapi.com/2/files/get_thumbnail
- https://content.dropboxapi.com/2/files/upload
- https://content.dropboxapi.com/2/files/upload_session/append_v2
- https://content.dropboxapi.com/2/files/upload_session/finish
- https://content.dropboxapi.com/2/files/upload_session/start
- https://content.dropboxapi.com/2/sharing/get_shared_link_file
- https://api.dropboxapi.com/2/paper/docs/download
content.dropboxapi.com の download 時の戻りの JSON は全て Dropbox-API-Result というヘッダーに含まれてくる。
- 400
- インプットパラメーターが間違っている場合は、レスポンスの BODY は JSON ではなくて plaintext で戻ってくる
- 401
- OAuth のトークン期限が切れた場合や、そのアクセストークンが revoke された場合に利用される。
- これが返ってきたらアクセストークン取りに行く必要がある
- 409
- HTTP 的にはコンフリクト
- エンドポイントの仕様エラー、 JSON フォーマットでのエラーが返ってくる
- Content-Type をみて Body のフォーマット形式を確認できる
- 429
- https://tools.ietf.org/html/rfc6585#section-4
- あまりにも多くのリクエストが来た場合に返ってくる
- 5xx
- Dropbox のサーバがおかしいので、このエラーが返ってきた場合は status.dropbox.com を確認する
409 の時に JSON がエラーに返ってきた場合トップレベルに以下の 3 つのエラーが入る
- error
- error_summary
- user_message
- オプション
{
"error_summary": "no_account/...",
"error": {
".tag": "no_account"
}
}
- auth
- files
- paper
- sharing
- users
5 個にわかれ、この後ろで判断する。
基本的に PATH copy のように 1 つ、ベースでの情報の取得に続いて何か次のアクションを取る場合のみ続きがある
- copy
- copy_batch
- create_folder
- https://api.dropboxapi.com/2/files/create_folder
- 指定したパスのにフォルダーを作成する
- list_folder
- list_folder/continue
- list_file_members
- list_file_members/batch
- get_account