ASP.NET WEB API QueryStringを使った検索
QueryString でたくさんの検索条件を指定する API の例です。
パラメータを指定しない場合は、初期値を設定したいものとします。
api/persons/? canCook=true & isHungry=false & Name=taro &.....
という URL で検索したい場合もあれば、
api/persons/?canCook=true
という URL で、指定しないパラメータは null で検索できるようにしたい、
というものです。
動かない・良くない例
↑ 引数が Null 許容なので一見動きそうですが、
全ての QueryString (または URL の一部)
を指定しないと、このアクションメソッドへはマッピングされません。
↑ こんな感じで用意すれば一応目的は達成できますが、面倒過ぎます。
動く例
でも。。。
でも、SearchParameter クラスを使った動く例2では、
ヘルプページ機能(0.3.0-rc)をそのまま使うと、各パラメータを表示してくれません。
表示させるには、カスタマイズする必要があります。
(本当はその実装を載せたかったのですが、できませんでした…orz)
が! 動く例2では、検証属性を使うことができます。
検索条件が制限付きって良くあるのでしょうか・・・。
カスタマイズの件は Reflection を使えばできそうですが、
WEB API のソースに似たような処理が無いか探し中です・・・。