2014年10月05日

WebAPIの基礎1

ASP.NET WebAPIでは個々のAPIをコントローラを作ってリクエストを処理する。

基本的な実装は以下のようになりそうだ。
世間的には珍しい、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
posted by Thoughter at 12:10| Comment(0) | TrackBack(0) | ASP.NET | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は90日以上新しい記事の投稿がないブログに表示されております。