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?
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. –
Ich habe dieses genaue Szenario mit Web API 2.2 getestet und es funktioniert. Ich denke, Sie verwenden eine alte Web-API-Version. –
@JayMee 'long' oder' int' das Ergebnis ist das gleiche –