[英]Can I replace the attribute routing with traditional route patterns for the web api controllers?
我有 web api ValuesController (标有[ApiController]
)和方法 [HttpPost] GetValue 里面。
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
[HttpGet]
public IEnumerable<string> GetValue()
{
return new string[] { "value1", "value2" };
}
}
我修改了 Startup.cs
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllerRoute("default", "{controller}/{action}"); // added
});
现在我希望该方法的路由应该是/api/Values/GetValue
当它是/api/Values
- 意味着{action}
被忽略?
可以将默认路由配置为在 uri 中包含 {action} 吗? 现在我强制使用[HttpGet(nameof(GetValue))]
来赋予动作看起来很冗长。
我知道标有 ApiController 的 controller 是特定的东西,但它应该对 MapControllerRoute 做出“反应”吗? 我在文档中找不到它。
属性路由总是比默认路由具有更高的优先级。 所以如果你想默认拥有 /api/Values/GetValue 你可以改变 controller 属性
[Route("api/[controller]/[action]")]
[ApiController]
public class ValuesController : ControllerBase
或者,如果您想使用默认启动路由,则必须从 controller 中删除属性路由并修复您的默认路由:
endpoints.MapControllerRoute("default", "api/{controller}/{action}");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.