ビューティフルWebコード

美しいWebサイトのコーディングについて説明をしていきます。

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名に動詞を使いましょう。