0

Ich habe die folgende Methode:Web API - Doppel Parameter übergeben Methode GET

[Route("GetEditorialRequestsByCoordinates/{lat:min(-90):max(90)}/{lng:min(-180):max(180)}")] 
[AutomapperExceptionApiFilterAttribute] 
public HttpResponseMessage GetEditorialRequestsByCoordinates(double lat, double lng) 
{ 

} 

Es funktioniert gut, wenn ich rufe ...

GET /v1/api/request/GetEditorialRequestsByCoordinates/48/2 

Aber ich will den doppelten Wert wie dies passieren :

GET /v1/api/request/GetEditorialRequestsByCoordinates/48.999/2.777 

Ich habe einen Fehler (404 nicht gefunden). Scheint, es kann keine geeignete Methode auf dem Weg finden. Ich habe versucht Route zu setzen durch:

[Route("GetEditorialRequestsByCoordinates/{lat:double:min(-90):max(90)}/{lng:double:min(-180):max(180)}")] 

... aber es funktioniert auch nicht.

Wie kann ich es beheben?

Antwort

5

Einfach ein/an das Ende der URL hinzufügen, korrigierte es für mich. Scheint, als ob die Routing-Engine es als eine 2.777-Dateierweiterung und nicht als einen Eingabeparameter anzeigt.

Darüber hinaus sieht es so aus, als könnten Sie eine benutzerdefinierte Route registrieren, die am Ende der URL automatisch einen nachgestellten Schrägstrich hinzufügt, wenn die integrierten Helfer zum Generieren der Verknüpfung verwendet werden.

Die einfachste Lösung ist, einfach die folgende Zeile zu Ihrer RouteCollection hinzuzufügen. Nicht sicher, wie Sie es mit dem Attribut tun würde, aber in Ihrem RouteConfig, können Sie dies nur noch hinzufügen:

routes.AppendTrailingSlash = true; 

Weitere Details here überprüfen.

letzte alle max und min-Funktion arbeitet für integer

max: Spiele eine ganze Zahl mit einem Maximalwert. {x: max (10)}

Ich denke, es funktioniert nicht doppelt.

+0

Die Hälfte des Problems ist gelöst, funktioniert aber nicht mit Bereichsbegrenzung. Ich habe eine weitere Frage erstellt: http://stackoverflow.com/questions/36119037/webapi-min-max-double-for-routeattribute –

Verwandte Themen