如何进行.NET Web API的自定义路由?

时间:2019-03-10 01:35:52

标签: c# asp.net api asp.net-web-api asp.net-web-api-routing

好吧,当我们第一次运行Web api项目时,通常在WebApiConfig中有这个

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

然后,如果我想使用除{controller}以外的其他路线,该怎么办?

config.Routes.MapHttpRoute(
                "DefaultApi",
                "api/queries/{query}/{id}",
                new { id = RouteParameter.Optional }
            );

我有我的自定义类来检索这样的名称列表:

public class GetNameListQuery
    {
        [HttpGet]
        public IEnumerable<String> GetNames(){ 
              return new String[] { "John" , "Adams" };
        }
    }

因此,当我运行URI“ mylocalhost / api / queries / GetNameList”时,我得到的名称为“ John”和“ Adams”。我是.NET的新手,不确定是否有任何方法可以执行此类操作。感谢您的帮助。谢谢!!

1 个答案:

答案 0 :(得分:0)

在您的路线配置中:

routes.MapRoute(
      "DefaultApi2",
      "api/queries/{action}",
      new { controller = "Query" }
);

然后创建控制器查询

public class QueryController : ApiController
{
    [HttpGet]
    public IEnumerable<String> GetNames()
    {
        return new String[] { "John", "Adams" };
    }
}

访问此路线:{{3}}