ASP.NET Web API でオプションのパラメーターのデータ型を検証するにはどうすればよいですか?
私のルーティングは次のようになります。
context.MapHttpRoute(
name: "ItemList",
routeTemplate: "api/v1/projects/{projectId}/items",
defaults: new
{
area = AreaName,
controller = "Items",
action = "GetItems",
offset = RouteParameter.Optional,
count = RouteParameter.Optional,
}
);
これらはすべて有効なリクエストです。
http://localhost/api/v1/projects/1/items
http://localhost/api/v1/projects/1/items?offset=20
http://localhost/api/v1/projects/1/items?count=10
http://localhost/api/v1/projects/1/items?offset=20&count=10
パラメータの 1 つに無効な値が指定されている場合を除いて、すべて正常に機能します。例えば、
http://localhost/api/v1/projects/1/items?count=a
検証エラーはなく、count が null になるだけです。
これを検出してエラー メッセージを返す方法はありますか? カスタム メッセージ ハンドラーを使用した解決策をどこかで見たことを思い出すと思いますが、それ以上は見つかりません。
コントローラ メソッドは次のようになります。
public IEnumerable<Item> GetItems([FromUri]GetItemsParams getItemsParams)
{
// logic
}
params クラスは次のようになります。
[DataContract]
public class GetItemsParams
{
[DataMember] public int? offset { get; set; }
[DataMember] public int? count { get; set; }
}