#author("2021-05-06T12:33:53+00:00","default:admin","admin") -[[5分で絶対に分かるAPI設計の考え方とポイント:http://www.atmarkit.co.jp/ait/articles/1511/19/news022.html]] -[[翻訳: WebAPI 設計のベストプラクティス:http://qiita.com/mserizawa/items/b833e407d89abd21ee72]] -[[GoogleのWebAPI設計とWebAPI設計のベストプラクティスを比較してみる:http://qiita.com/howdy39/items/3b2b14ce73ec44c54f7b]] -[[「WebAPI 設計のベストプラクティス」に対する所感:http://qiita.com/ryo88c/items/0a3c7861015861026e00]] -[[WebAPIの設計から実装まで〜設計編〜:http://qiita.com/takeokunnn/items/5442bb266fee6ee07799]] -[[WebAPIの設計から実装まで〜実装編〜:http://qiita.com/takeokunnn/items/c119e576a6c04d37e098]] -[[API 設計: gRPC、OpenAPI、REST の概要と、それらを使用するタイミングを理解する:https://cloud.google.com/blog/ja/products/api-management/understanding-grpc-openapi-and-rest-and-when-to-use-them]] -[[Swagger、GraphQL、gRPC+Protocol Buffersの概観:https://qiita.com/ara_tack/items/f1252d335a0f18f96a4c]] -[[OpenAPI や Protocol Buffers のおかげで開発がかなり捗っている話:https://developer.medley.jp/entry/2020/08/21/190934]] -[[マイクロサービスにおけるWeb APIスキーマの管理 ─ GraphQL、gRPC、OpenAPIの特徴と使いどころ:https://employment.en-japan.com/engineerhub/entry/2019/08/22/103000]] -[[ASP.NET CoreでgRPCサービスを作ってみた:https://www.qes.co.jp/media/Microservices/a64]] -[[IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用:https://engineer.dena.com/posts/2020.03/mov-central-service/]] *URI [#x63e4cdc] -スネイクケース推奨 -ベースURIに「api」という単語を含める *レスポンス [#t851304e] -[[RESTful APIのHTTPステータスコード設計:https://qiita.com/NagaokaKenichi/items/eb85b5fbb719d60c6627]] **データ表記 [#m7d2bf3b] -日時 --[[ISO 8601 - WIkipedia:https://ja.wikipedia.org/wiki/ISO_8601]] --[[ISO 8601 の時刻表記:https://www.keicode.com/note/datetime-iso8601.php]] --ISO8601に準拠 --日本時間の場合:YYYY-MM-DDTHH:mm:ss+0900 -性別 --[[システムで「性別」の情報を扱う前に知っておくべきこと:https://qiita.com/aoshirobo/items/32deb45cb8c8b87d65a4]] --ISO5218に準拠 --男性は 1、女性は 2、それ以外は 9、不明な場合は 0 **エラー [#t29c2016] -[[RESTful APIのエラー設計:https://qiita.com/NagaokaKenichi/items/20825ae9256d9f4c6f35]] -[[WebAPIでエラーをどう表現すべき?15のサービスを調査してみた:https://qiita.com/suin/items/f7ac4de914e9f3f35884]] ***データ項目 [#y53644fa] -status ... HTTPステータスコードをHTTPレスポンスヘッダに格納 -type ... エラーの種別を示すURIを格納 -title ... エラーの名称を表示 -detail ... エラーの説明文を格納 ***セキュアなエラーフィードバック [#k8c256be] -403 Forbidden --データへのアクセス不許可 → データが存在することを暗に認めていることになる --「404 Not Found」レスポンスに変えることも検討する -500 Internal Server Error --APIのベースとなっている技術スタックに関する詳細情報が提供されないようにすること --APIの内部で実際に稼働しているものの手がかりになるような情報を提供しないように注意する必要がある *ファイルアップロード [#rdf307bd] -[[WebAPI でファイルをアップロードする方法アレコレ:https://qiita.com/mserizawa/items/7f1b9e5077fd3a9d336b]]