我有一些控制器要限制在路径/api/
中,如下所示:
server.com/api/Load/Test
为此我设置了这个路由:
routes.MapRoute(
name: "ApiDefault",
url: "api/{controller}/{action}/",
namespaces: new string[] { "Framework.ApiControllers" }
);
当然上面的网址也有效,但server.com/Load/Test
没有/api/
也是如此,我真的希望api控制器只响应/api/
路径。
如何设置?
答案 0 :(得分:1)
一个简单的解决方案是从基于约定的路由转移到api控制器的属性路由。这意味着从路由配置中删除api路由并直接将路由添加到控制器:
[Produces("application/json")]
[Route("api/Load")]
public class LoadController : Controller
{
}
如果你不想单独装饰每个api控制器,你可以创建一个BaseApiController,你的每个api控制器都可以继承:
[Route("api/[Controller]")]
public class BaseApiController : Controller
{
}
public class LoadController : BaseApiController
{
public IActionResult Test()
{
return Ok("foo");
}
}