2016-10-15 7 views
0

WebApiの重複パラメータに関する問題があります。このAPIコントローラでウェブAPIの重複パラメータ

http://localhost:xxxxx/api/getbook?UserId=7私は1つのパラメータ文字列UserIdを持っていると正常に動作しますが、私はその

http://localhost:xxxxx/api/getbook?UserId=7?UserId=7ような何かを行う場合は、APIでの重複パラメータを防ぐために、どのように結果

を取得?

答えて

0

注意すべき物事のカップル:

  1. パラメータ間&文字があるでしょうが、あなたがモデルを取っている場合は、同じ名前の最初のパラメータはデフォルトで使用されますhttp://localhost:xxxxx/api/getbook?UserId=7&UserId=7
  2. 、すなわちあなたは、重複するパラメータ名を発見したときに、いくつかのエラーをスローすることに熱心であれば、コントローラのメソッドに

その後、次の操作を行うことができます:

を10
var queryParameters = Request.GetQueryNameValuePairs() 
       .GroupBy(k => k.Key) 
       .Where(g => g.Count() > 1) 
       .Select(q => q.Key) 
       .ToList(); 

これにより、パラメータ名のうちList<string>が複数回表示されます。

パラメータ名と値の組み合わせが(あなたの例のように)繰り返されるかどうかについては、代わりにGroupBy(k => k)とすると、KeyValuePairのリストが使用できます。

+0

ありがとうございましたこれは私が探していたものです:D –

+0

アクションを使用してアクションメソッドを実行するには次のクエリを使用できますか? –

+0

私はこれをコントローラのメソッド内でテストしました。他の場所で、 'HttpContext.Current.Request'を使う必要があるかもしれません。 'BadRequest()'を文字列で返すか、 'ModelState'にメッセージを追加する方が良いでしょう。 –