30

/api/foo?sort=nameこれを尋ねるのは少しばかげているように感じますが、たとえばget リクエストのパラメーターを取得する方法が見つかりません 。

ApiControllerクラスでは、私はpublic string Get(). putGet(string sort)/api/foo悪い要求をします。のリクエスト インスタンスApiControllerはタイプSystem.Net.Http.HttpRequestMessageです。QueryStringorParametersプロパティなどはありません。

4

8 に答える 8

34

ApiController は、HttpContext オブジェクトがなくても機能するように設計されています (移植可能にし、IIS の外部でホストできるようにします)。

クエリ文字列パラメーターには引き続きアクセスできますが、次のプロパティを介して実行されます。

Request.GetQueryNameValuePairs()

すべての値をループする例を次に示します。

foreach (var parameter in Request.GetQueryNameValuePairs())
{
     var key = parameter.Key;
     var value = parameter.Value;
}
于 2014-04-03T10:44:24.487 に答える
21

あなたはただ使うことができます

HttpContext.Current.Request.QueryString
于 2012-11-09T16:30:33.193 に答える
7

リクエストからクエリ文字列 q を取得し、それを使用してアカウントをクエリする例を次に示します。

        var q = Request.GetQueryNameValuePairs().Where(nv => nv.Key =="q").Select(nv => nv.Value).FirstOrDefault();
        if (q != null && q != string.Empty)
        {
            var result = accounts.Where(a=>a.Name.ToLower().StartsWith(q.ToLower()));
            return result;
        }
        else
        {
            throw new Exception("Please specify a search query");
        }

これは、次のように呼び出すことができます。

url/api/アカウント?q=p

于 2014-09-22T07:23:53.540 に答える
4

すべてのクエリ文字列の名前と値のペアを変数に取得します。

IEnumerable<KeyValuePair<string, string>> queryString = request.GetQueryNameValuePairs();

次に、指定されたクエリ文字列パラメーターを抽出します

string value = queryString.Where(nv => nv.Key == "parameterNameGoesHere").Select(nv => nv.Value).FirstOrDefault();
于 2016-07-28T00:49:08.763 に答える
0

OData Web サービスを構築しようとしていますか? その場合は、IQueryable を返すだけで、あとは Web API が処理します。

于 2012-05-18T17:07:23.020 に答える