URL設計 画面のURLの命名規則を決めよう Action名は動詞!?
Action名は動詞!
Controllerが主語、Actionが動詞であればそのURLは
/Controller名 / Action名 は S(主語)V(動詞)の関係になります。
オブジェクト指向プログラミングでいうところのクラス名、メソッド名も主語、動詞の関係ですよね。
実際に、MVCフレームワークではController名はクラス名、Action名はメソッド名になるので、やはり主語、動詞の関係であるべきです。
Indexは動詞!?
よく既定のAction名(省略可能なAction名)としてIndexが割り当てられているMVCフレームワークは多いと思います。
Indexって動詞の意味もあるけど目次って意味だと名詞だよねぇ。。例外なの?
自分は例外だと思っています(笑)
RestfulAPIのURL設計に毒されるな
最近RestfulAPIの設計が市民権を得てきて、ナウでヤングな設計になってきています。
SOAPや、XML-RPCのような古いAPIの形式の立場が無くなってきていてちょっと寂しい。
RestfulAPIの思想である、
動詞はHTTP MethodでURLはリソースを表す!
を崇拝するあまり、画面のURLに動詞を使うことに抵抗を持つ若いエンジニアが結構います。
今、話題にしているのは、画面のURL設計です。APIのURL設計ではありません!
WebAPIのURL設計と画面のURLは似て非なるものです!!!
CRUD(Create,Read,Update, Delete)を表す場合、
RestfulAPIではHTTP Methodの(POST, GET, PUT, DELETE)を使いますが、ブラウザからのアクセスではPOSTとGETしか使えません。
GETな動作
- ブックマーク
- 検索エンジンからの遷移
- URLバーに直接URL入力!
- aタグによるリンク
- metaタグによるリダイレクト
- javascriptによるlocation.hrefによるリダイレクト
- formでmethod="GET"
POSTな動作
- formからmethod="post"
まあ、ほとんどGETなんですよね。つまりHTTPメソッドを活用できない以上、URLで代用するしかないのですね。
どんどんAction名に動詞を使いましょう。