基本的な実装は以下のようになりそうだ。
世間的には珍しい、VBソースで。
Imports System.Net
Imports System.Web.Http
<RoutePrefix("api/sample")> _
Public Class SampleController Inherits ApiController
<Route("{id}")> _
Public Function Gets(ByVal id As Integer) As IHttpActionResult
'なんらかの処理
Return Ok(id)
End Function
<Route("name/{id}")> _
Public Function GetNames(ByVal id As Integer) As IHttpActionResult
'なんらかの処理
Return Ok(id + 10)
End Function
End Class
うまく、REST設計ができれば、こんな風にならないかもしれないが、
単純に考えると、1つのコントローラーで似たようなURLで複数のGETメソッドを実装したりするだろう。
上記では、/api/sample/1と/api/sample/name/1。
その場合、属性ルーティングを使うとシンプルにできる。
使わないと、アクセス時に
「要求に一致する複数のアクションが見つかりました」というエラーになる。
同じI/Fのメソッドが存在すると、どちらにマッピングすればよいか分からないからだ。
コンパイル時に検出できると助かるんだけど、さすがにそこまでの機能はない。
個々のメソッドにRoute属性を付加して、URLの一部を明記しておくと、
リクエスト時に該当するメソッドが呼び出される動きになる。
さらに、RoutePrefix属性で共通部分を定義できる。
これだけ理解すれば、正常ケースのGETメソッドについては、あとは返す内容だけ。
…で、いいんですかね??
少し参考にしました。
http://www.atmarkit.co.jp/ait/articles/1312/16/news056.html