1

Web API に関するMicrosoft のCRUD チュートリアルから:

最後に、カテゴリ別に製品を検索するメソッドを追加します。

public IEnumerable<Product> GetProductsByCategory(string category)
{
    return repository.GetAll().Where(
            p => string.Equals(p.Category, category, StringComparison.OrdinalIgnoreCase));
}

要求 URI にクエリ文字列が含まれている場合、Web API はクエリ パラメーターをコントローラー メソッドのパラメーターと照合しようとします。したがって、「api/products?category=category」という形式の URI がこのメソッドにマップされます。

これをジェネリックにする方法はありますか?GetProductsByWhateverIsInTheURI(文字列WhateverIsInTheURI)または「api/products?whatever=whatever」のように?

ありがとうございました。

4

1 に答える 1

2

それを「一般的」と表現するかどうかはわかりませんが、パラメーター バインディングを完全に排除するキャッチオール ルートを作成することもできます。これは、「1 つのメソッドであらゆる種類のパラメーターを受け入れる」メソッドになります。

public IEnumerable<string> Get()
{
    List<string> retval = new List<string>();

    var qryPairs = Request.GetQueryNameValuePairs();
    foreach (var q in qryPairs)
    {
        retval.Add("Key: " + q.Key + " Value: " + q.Value);
    }

    return retval;
}
于 2013-11-05T22:32:04.250 に答える