私は、.Net MVC4 Web API を使用して (うまくいけば) RESTful API を実装しています。いくつかのパラメータをシステムに渡して、何らかのアクションを実行させ、結果としてオブジェクトのリストを返す必要があります。具体的には、2 つの日付を渡し、その間のレコードを返します。また、返されたレコードを追跡して、後続の呼び出しがシステムで再処理されないようにしています。
私はいくつかのアプローチを検討しました:
パラメータを 1 つの JSON 文字列にシリアル化し、API で分解します。http://forums.asp.net/t/1807316.aspx/1
クエリ文字列でパラメータを渡します。
複数のクエリパラメータを RESTful API に渡す最適な方法は何ですか?ルート内のパラメータの定義: api/controller/date1/date2
本質的にパラメータ付きのオブジェクトを渡すことができる POST を使用します。
Web API が (現在) ODATA をサポートしているので、ODATA について調査しています。まだこれについてあまりやったことがないので、あまり詳しくありません。
適切な REST プラクティスでは、データを取得するときに GET を使用する必要があることが示されているようです。ただし、GET は nullipotent (副作用を生成しない) である必要があり、API システムでレコードをマークして副作用を生成しているため、私の特定の実装がこれに違反しているのではないかと考えています。
また、可変パラメータのサポートについても疑問が残りました。入力パラメータ リストが変更される場合は、頻繁に変更されるので、選択肢 3 のルートを再定義するのは面倒です。パラメータが実行時に定義されるとどうなるでしょうか...
いずれにせよ、私の特定の実装では、どの選択肢(もしあれば)が最適と思われますか?
ベストアンサー1
最も簡単な方法は、単に を使用することだと思いますAttributeRouting
。
コントローラー内では明らかなのに、なぜこれをグローバルWebApiConfig
ファイルに含める必要があるのでしょうか?
例:
[Route("api/YOURCONTROLLER/{paramOne}/{paramTwo}")]
public string Get(int paramOne, int paramTwo)
{
return "The [Route] with multiple params worked";
}
名前{}
はパラメータと一致する必要があります。
GET
このように簡単に、このインスタンスで複数のパラメータを処理する別のものができました。