1. ホーム
  2. c#

[解決済み】ASP.NET Web APIでクエリ文字列のパラメータを任意に設定する方法

2022-04-05 08:46:12

質問

以下のWebAPIメソッドを実装する必要があります。

/api/books?author=XXX&title=XXX&isbn=XXX&somethingelse=XXX&date=XXX

クエリ文字列のパラメータは、すべてNULLにすることができます。つまり、呼び出し側は0から5つのパラメータを全て指定することができます。

MVC4ベータ版 以前は以下のようにしていました。

public class BooksController : ApiController
{
    // GET /api/books?author=tolk&title=lord&isbn=91&somethingelse=ABC&date=1970-01-01
    public string GetFindBooks(string author, string title, string isbn, string somethingelse, DateTime? date) 
    {
        // ...
    }
}

MVC4 RCでは、もうこのような動作はしません。パラメータを5個未満しか指定しないと 404 と言っています。

コントローラ 'Books' でリクエストに一致するアクションは見つかりませんでした。

URLルーティングでオプションのパラメータを指定することなく、以前のように動作させるには、どのような正しいメソッドシグネチャが必要でしょうか?

どのように解決するのですか?

この問題は、MVC4の通常版リリースで修正されました。 これで、できるようになりました。

public string GetFindBooks(string author="", string title="", string isbn="", string  somethingelse="", DateTime? date= null) 
{
    // ...
}

で、全ては箱から出してすぐ動きます。