2016-10-15 2 views
0

Ich habe ein Problem in Bezug auf doppelte Parameter in WebApi.Doppelte Parameter in Web-API

http://localhost:xxxxx/api/getbook?UserId=7 in diesem API-Controller habe ich eine Parameterkette UserId und funktioniert gut, aber wenn ich so etwas tun

http://localhost:xxxxx/api/getbook?UserId=7?UserId=7 bekommt das Ergebnis

So wie doppelte Parameter in API zu verhindern?

Antwort

0

Ein paar Dinge zu beachten:

  1. Es wäre ein & Charakter zwischen den Parametern, dh http://localhost:xxxxx/api/getbook?UserId=7&UserId=7
  2. Der erste Parameter des gleichen Namens wird standardmäßig verwendet werden, wenn Sie ein Modell nehmen in zu einer Controller-Methode

Wenn Sie einige Fehler zu werfen sind sehr daran interessiert, wenn Sie doppelte Parameternamen entdecken, dann können Sie folgendes tun:

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

Dies gibt Ihnen eine List<string> von Parameternamen, die mehr als einmal erscheinen.

Wenn Sie sich dafür interessieren, ob die Kombination aus Parametername und Wert wiederholt wird (wie in Ihrem Beispiel), dann verwenden Sie stattdessen GroupBy(k => k) und Sie erhalten eine Liste mit KeyValuePair.

+0

Vielen Dank sir das ist, was ich gesucht habe: D –

+0

Verwenden von Action Context zum Ausführen von Action-Methode können wir diese Abfrage richtig verwenden ?? –

+0

Ich testete dies innerhalb einer Methode in einem Controller. Irgendwo anders und Sie müssen möglicherweise 'HttpContext.Current.Request' verwenden. Sie könnten ein 'BadRequest()' mit einem String zurückgeben oder besser noch eine Nachricht zum 'ModelState' hinzufügen. –

Verwandte Themen