私は、エンティティを取り出してフォーマッタを介して返すジェネリックGetByIdとGetByIdsである、私のAPI上で操作の束を持っています。Web APIでint []パラメータが必要ですか?
これらの操作は、次のようになります。あなたが例えばhttp://localhost/api/SomeEntity/ByIds?ids=1&ids=2
でこれをヒットした場合
[HttpGet]
[Route("ByIds")]
public IHttpActionResult ByIds([FromUri]int[] ids)
{
var items = _myContext.SomeEntity.Where(a => ids.Contains(a.ID)).ToList();
return SomeFormatter(items);
}
、あなたが期待するようでは1と2との配列を取得します。
http://localhost/api/SomeEntity/ByIds?ids=
でこれをヒットした場合、空の配列が得られると思われるかもしれませんが、0
の値を持つint[1]
が得られます。
私は何が起こることは一つの要素は、指定されたとして、それを認識している疑いがある、それを変換することはできませんので、default(int)
を使用して、あなたに一つの値を持つint型の配列を与える配列の中にいることを置く、0
の値しかし、http://localhost/api/SomeEntity/ByIds?ids=potato
でそれを打つと、無効なモデル状態になり、自動的に処理します。
空のクエリパラメータ値を空の配列またはModelStateエラー(つまり、空の値を指定するとポテトと同じ動作)にマッピングする方法はどれですか?私は、モデル状態のエラーが優先され、より論理的だと思います。
私はこの問題にもあまりにもぶつかります。あなたは解決策を見つけましたか?私の場合は、ModelStateエラーに空の配列を使用します。 –