技術ブログ

(技術系中心)基本自分用備忘録なので、あくまで参考程度でお願いします。

綺麗なURI(ルーティング)を作るときのTIPS

綺麗なURI(ルーティング)を作るときのTIPS

APIを開発する時にエンドポイントのURIを設定しますが、良いURI設計を意識することが大事です。

.......でも良いURI設計とは一体なんぞや!

良いURI設計とは下記のようなものです。

覚えやすく、どんな機能をもつURIなのかが一目でわかる

次に良い設計のURIの特徴を箇条書きしていきます!

良いURIの特徴その1、短くて入力しやすいURI

URIは長ければ良いと言う訳ではありません。
例えば以下のようなURIがあるとします。

悪い例
http://api.example.com/hogehoge/api/hogehoge

このURIは重複箇所が多く無駄が多いです。

1. apiと言う言葉がURIのホストとパスの両方に含まれている
2. hogehogeが2回記載されている。

以下にシンプルにしたURIを記載します。

良い例
http://api.example.com/hogehoe

良いURIの特徴その2、人間が読んでも理解できるURI

悪い例
http://api.example.com/sv/pic

こちらのURIは見ただけでは意味不明です。
理由は以下のようにワードを簡略化しているからです。
開発者はわかりますが、ユーザーにはわかりづらいです。

1. sv = service
2. pic = picture
良い例
http://api.example.com/service/picture

できる限り標準化されたコードで体系的に書く方がベターです。

良いURIの特徴その3、大文字小文字が混在していないURI

悪い例
http://api.example.com/SERVICE/picture

こちらのURIは大文字と小文字が混在しています。
非常にわかりづらいです、現時点でURIは小文字で統一されることを推奨されています。

良い例
http://api.example.com/service/picture

良いURIの特徴その4、サーバー側のアーキテクチャが反映されていないURI

悪い例
http://api.example.com/cgi-bin/get-user/php?user=11111

このコードは開発者が見ると、思いっきりサーバーのアーキテクチャがバレバレです。

1. PHPで書かれている
2.CGIで動作している
3. userのIDは11111

このあたりの情報がバレると脆弱性に繋がってしまいます。
良いURIはサーバー側のアーキテクチャ情報をURIには記載しません。

良いURIの特徴その5、ルールが統一されているURI

悪い例
http://api.example.com/services?id=100

http://api.example.com/service/id/100

この2つのコードには全くの統一感がありません。
理由はルールが統一されていないからです。
このままでは、ユーザーの混乱を巻き起こし、トラブルに発生する恐れありです。
良いURIはルールが統一されており、わかりやすいです。

まとめ

良いURIを作るにも多くの制約があります。この辺の特徴ははAPI開発する際には頭にいれておかないとですね。

参考書籍

Web API: The Good Parts