Как динамически указывать строку запроса в URL веб-API - PullRequest
0 голосов
/ 13 сентября 2018

Я новичок в C # и веб-API.У меня есть контроллер WebAPI с методом Get следующим образом:

 public class peopleController : ApiController
 {
     [HttpGet]
     public IHttpActionResult getAllPeople(string Name, string Age)
     {
        //Return something
     }
 }

Мой WebApiConfig выглядит так:

config.Routes.MapHttpRoute(
            name: "getAllPeopleApi",
            routeTemplate: "people",
            defaults: new { controller = "people", action = "getAllPeople" }

        );

Если я вызываю свой URL следующим образом: http://localhost:xxx/people?Name=&Age=.Это работает нормально.

Но когда я вызываю, как все это: http://localhost:xxx/people, http://localhost:xxx/people?Name=, http://localhost:xxx/people?Age=

Я получаю это сообщение об ошибке:

{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:xxxx/......'.","MessageDetail":"No action was found on the controller 'people' that matches the request."}

Я пытаюсь установить мой routeTemplate: "people/{Name}/{Age}".Теперь, когда я запускаю этот веб-API Error 404.0 Not Found

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Удалось решить эту проблему путем явного задания параметра Name и Age равным Null.

public class peopleController : ApiController
 {
     [HttpGet]
     public IHttpActionResult getAllPeople(string Name = null, string Age=null)
     {
        //Return something
     }
 }

Это сделает параметры необязательными. Теперь вы можете вызвать контроллер с или без строкового параметра Query.

0 голосов
/ 13 сентября 2018
routeTemplate: "people/{Name}/{Age}"

Эта часть не является QueryString, это динамический путь.Это означает, что ваш путь становится Domain/people/SomeName/SomeAge?QueryString=Whatever

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...