非常に "GET" を多用する ASP.NET WEB API アプリケーションがあります。ほとんどのメソッドは、メソッド シグネチャが異なるパラメータのバリエーションを受け入れます。
例えば
[HttpGet]
public async Task<HttpResponseMessage> GetProducts(int year)
{
//...
}
[HttpGet]
public async Task<HttpResponseMessage> GetProducts(int year, string category)
{
//...
}
[HttpGet]
public async Task<HttpResponseMessage> GetProducts(int year, string category, int minPrice)
{
//...
}
[HttpGet]
public async Task<HttpResponseMessage> GetProducts(int year, string category, decimal minPrice, decimal maxPrice)
{
//...
}
からのデータ注釈を使用したいのですがSystem.ComponentModel.DataAnnotations
、すべての単純な URL パラメーターをモデルに変換する必要があることに気付きましたか? つまり、メソッドのバリエーションごとに入力モデルを作成する必要があります(以下の例を参照)。
[HttpGet]
public async Task<HttpResponseMessage> GetProducts([FromUri] yearModel)
{
//...
}
public class YearModel
{
[Required]
[Range(1966, 2013)]
public int Year { get; set; }
}
メソッドのバリエーションを保持し、データ注釈を引き続き使用したい場合、すべての入力モデルを作成せずにそれらを使用する方法はありますか (何とか「インライン」で使用する方法はありますか?)?