2015-10-07 6 views
6

ich auf meinem api GET Methoden haben will, eine mit dem Route mit Pfadparameter:Wie Abfrageparameter von dem Pfad zu unterscheiden Parameter

api/people/{PersonId}

und mit Abfrageparametern eines mit der Route:?

api/people text = etwas

aber wenn ich diesen Code setzen:

// GET: api/people/{personId} 
[Route("api/people/{personId}")] 
[HttpGet] 
public HttpResponseMessage Get(long personId) 
{ 
} 

// GET: api/people?text=something 
[Route("api/people")] 
[HttpGet] 
public HttpResponseMessage Get(string text) 
{ 
} 

Und dann versuchen /api/Leute öffnen/1 es sagt falsches Format und wenn ich versuche, /api/Menschen zu öffnen, text = etwas es? funktioniert.

nur die Standardroute definiert Ich habe:

config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{id}", 
     defaults: new { id = RouteParameter.Optional } 
    ); 

Wie kann ich sie haben beide arbeiten? Definiere das, wenn es ein Pfadparameter ist, gehe zum ersten und wenn es ein Abfrageparameter ist, gehe an zweiter Stelle?

+0

Was passiert, wenn Sie 'long' in' int' ändern? (Aus Neugier). Gute Frage. Ich bin mir bei der Antwort (noch) nicht sicher. Ich hätte nicht gedacht, dass Sie Probleme haben würden, wenn Sie sich diesen Code anschauen. –

+0

Ich habe dieses genaue Szenario mit Web API 2.2 getestet und es funktioniert. Ich denke, Sie verwenden eine alte Web-API-Version. –

+0

@JayMee 'long' oder' int' das Ergebnis ist das gleiche –

Antwort

4

Ich habe dies nur in Visual Studio 2015 mit Web API 2 und es funktioniert gut. Ich musste die folgenden Zeilen hinzufügen (eine für jede Controller-Methode).

return Request.CreateResponse(HttpStatusCode.OK); 

Ich blies auch die Standard-Route Config entfernt. Die folgenden URLs arbeiten nur

Fein

http://localhost:64377/api/people/1

http://localhost:64377/api/people?text=Hello

Ich traf die beiden entsprechenden Methoden in meinem Controller, wenn ich diese URLs in IE setzen.

+0

Dies funktioniert Ich denke, das Problem war die Standard Route Config, danke Kumpel! ;) –

+0

Kein Problem. Prost! –

Verwandte Themen