ASP.NET Web API - как я могу иметь один контроллер, который будет соответствовать ЛЮБОМУ маршруту? - PullRequest
0 голосов
/ 26 сентября 2019

Я хочу создать контроллер, который выглядит следующим образом:

public class GenericController : ApiController
{
    public string Get() {
        throw new Exception();
    }
}

И я хочу вызвать этот метод из любого из этих URL-запросов (при условии, что http://domain/ - это домен):

GET http://domain/

GET http://domain/billy

GET http://domain/susie?whatever=true

(я чувствую, что это должно быть просто, но я не могу сделать это с любой комбинациейконтроллер и код WebApiConfig.)

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

В WebApiConfig.Register():

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "{*url}",
    defaults: new { controller = "Generic" }
);
0 голосов
/ 26 сентября 2019

Вы можете установить свой маршрут API на что-то вроде этого:

 routes.MapRoute(
       name: "API Default",
       template: "{name?}", new { controller = "Api"  });

и затем в вашем контроллере:

[Route("{name?}")]
    [ApiController]
    public class ApiController : ControllerBase
    {
        [HttpGet]
        public string Get(string name)
        {
            // do something with name 
            return name;
        }
    }
...