C# ASP.NET MVC API路由
我正在尝试在ASP.NET MVC应用程序中创建到API的路由。调用此API的示例如下所示:C# ASP.NET MVC API路由,c#,asp.net-mvc,C#,Asp.net Mvc,我正在尝试在ASP.NET MVC应用程序中创建到API的路由。调用此API的示例如下所示: /MyApp/api/lookup/person?i1=123&i2=test /MyApp/api/lookup/product?i1=597&i2=1234 /MyApp/api/lookup/order?i1=1&i2=597 路线的总体结构如下所示: /{AppRoot}/api/lookup/{someKey}?i1={value1}&i2={value2}
/MyApp/api/lookup/person?i1=123&i2=test
/MyApp/api/lookup/product?i1=597&i2=1234
/MyApp/api/lookup/order?i1=1&i2=597
路线的总体结构如下所示:
/{AppRoot}/api/lookup/{someKey}?i1={value1}&i2={value2}
config.Routes.MapHttpRoute(
name: "LookupApi",
routeTemplate: "api/lookup/{action}",
defaults: new { controller = "LookupApi", action = "Index" }
);
public class LookupApiController
{
[HttpGet]
public async Task<IHttpActionResult> Index()
{
return Ok();
}
}
我在我的WebApiConfig.cs文件中添加了一个路由,如下所示:
/{AppRoot}/api/lookup/{someKey}?i1={value1}&i2={value2}
config.Routes.MapHttpRoute(
name: "LookupApi",
routeTemplate: "api/lookup/{action}",
defaults: new { controller = "LookupApi", action = "Index" }
);
public class LookupApiController
{
[HttpGet]
public async Task<IHttpActionResult> Index()
{
return Ok();
}
}
然后我定义了一个控制器,如下所示:
/{AppRoot}/api/lookup/{someKey}?i1={value1}&i2={value2}
config.Routes.MapHttpRoute(
name: "LookupApi",
routeTemplate: "api/lookup/{action}",
defaults: new { controller = "LookupApi", action = "Index" }
);
public class LookupApiController
{
[HttpGet]
public async Task<IHttpActionResult> Index()
{
return Ok();
}
}
公共类LookupApicController
{
[HttpGet]
公共异步任务索引()
{
返回Ok();
}
}
当我在
索引
操作中设置断点时,不会调用它。我不明白为什么。我希望有一种简单的方法来查看给定路由调用了什么控制器操作,以及映射到哪个代码行。无论如何,我如何解决我的查找操作没有被调用的问题?根据您定义的路由模板:“api/Lookup/{action}”
,对于像/MyApp/api/Lookup/person这样的url?i1=123&i2=test
,它将person
作为操作名称,并将尝试在LookupApiController
中查找不存在的名为person
的操作
我不确定您是否要创建这些操作以适合您的结构,要使示例url点击索引
操作,一个简单的方法是将您的路径更改为:
config.Routes.MapHttpRoute(
name: "LookupApi",
routeTemplate: "api/lookup/{someKey}",
defaults: new { controller = "LookupApi", action = "Index" }
);
这样,url中的人员
将不再表示操作名称,您可以在索引
操作中获取该值作为参数:
public class LookupApiController
{
[HttpGet]
public async Task<IHttpActionResult> Index(string someKey)
{
//DO something
return Ok();
}
}
公共类LookupApicController
{
[HttpGet]
公共异步任务索引(字符串someKey)
{
//做点什么
返回Ok();
}
}