Web API The Good Parts
AmazonやTwitterがAPIを公開したことで普及するきっかけの要因になった話は面白かった
APIのエコシステムに参加することで、サービス自身がユーザーに受け入れられやすくなるというのは、理解してた方が良いな、まあ個人レベルなら関係ないか
APIを公開するリスクはあるか?
ユーザをまだそれほど集められていないサービスであれば、サービスの情報で済むという人はあまりないでしょう。むしろ情報をよく活用してくれる人が登場して、サービスに付加価値をつけてくれる可能性の方が高いでしょう。
ウェブAPI美しくするには
- 仕様が決まっているものに関しては、仕様に従う
- 腫瘍が存在してないものに関しては、デファクトスタンダードに従う
確かに覚えやすくわかりやすいURIってよく言うけどちょっと漠然とした言葉だな。
もう少し具体的な指標
- 短く入力しやすいURI
- 人間が読んで理解できるUI
- 改造しやすい(Hackableな)URI
- サーバー側のアーキテクチャが反映されていないURI
- ルールが統一されたURI
人間が読んで理解できるURI
以下写真例のように意味のわからない単語は使わない
さらに、数字の羅列を使う場合は、一つ前の名称をusersにするなどして、数字の意味を明確化することが大事
URIに限らず、前の職場でも省略は基本使わないようにしてたけど、国際企画として標準化されているものはそれを使ったほうがいいんだな
ISO 639の航空会社や空港表すコードとか
日本航空はJL、羽田空港は、HNDなど
理解しやすい英単語の判断基準
理解したURLに英単語を使うと言うのは一般的だけどもその英単語の中でもよく使われている単語を選ぶ必要がある。しかし英語ネイティブではない人には難しいので、実際のAPIを見てみるのが1番良さそう
ProgrammableWebで確認
追加
閉鎖されてるから以下が良いかも
https://apilayer.com/marketplace?utm_source=any-api&utm_medium=any-api-redirection&utm_campaign=any-api-redirection
問題があります!!!
getUserNameのような場合はこのようないわゆるキャメルケースにしたほうがわかりやすいのではないか、と思うかもしれません。しかしこれは、get_user_name や get-user-name
のようにすればよいのではないかというとそうではなく、getUsernameというような名前の付け方にそもそも問題があります。これについては後ほど述べます。
改造しやすい(Hackableな)URI
あるURLから他のURLを想像することが可能であれば、ドキュメントを見なくて開発進めることができる。
サーバー側の都合はサーバー内で処理をして、利用者にそれを意識させないのは美しい設計だと言えるでしょう。
極端な例だが、なんらかの理由で以下のURI担っている時、ユーザーはいちいちID範囲を確認しなきゃいけなくなる。
IDの範囲 | エンドポイント |
---|---|
1 ~ 300000 | http://api.example.com/v1/items/alpha/:id |
400001 ~ 500000 | http://api.example.com/v1/items/beta/:id |
500001 ~ 700000 | http://api.example.com/v1/items/gamma/:id |
700001 ~ | http://api.example.com/v1/items/delta/:id |
サーバー側のアーキテクチャが反映されてないURI
言語によってURIなど変わることがないようにってことか
ルールが統一されたURI
以下のようなエンドポイントがある
友達の情報の取得
http://api. example.com/friends?id=100
※メッセージの投稿
http://api. example.com/friend/100/message
friendsの複数形が違ったり、クエリとURIで検索したりと統一感がない。