【发布时间】:2022-10-21 18:53:04
【问题描述】:
在我所有的项目中,我将这段代码放在我的控制器顶部:
[Route("api/[controller]/[action]")]
[ApiController]
public class ValuesController : ControllerBase
{
[HttpGet]
public IActionResult GetTest1()
{
return Ok();
}
[HttpGet]
public IActionResult GetTest2()
{
return Ok();
}
[HttpPost]
public IActionResult PostTest1(string Request)
{
return Ok("value was " + Request);
}
}
因此,我可以使用操作名称调用我的 API,而无需指定每个操作路线,如下图所示:
这工作正常,但我需要把这条路线放在我项目中所有 ApiControllers 的顶部,当我决定将所有路线更改为新路线时,我需要替换项目中的所有路线属性.
我在寻找全局解决方案,例如在我的 program.cs 文件中是这样的:
app.MapControllerRoute(
name: "default",
pattern: "api/{controller}/{action}");
问题是当我从我的 API 中删除 RouteAttribute 时,我无法让这段代码工作。
【问题讨论】:
-
为什么你会厌倦在每个控件上输入
[Route("api/[controller]/[action]")]而不会厌倦在方法上输入HttpPost、[HttpGet]注释?来吧... -
@MosiaThabo 我的问题是关于路线的,但是如果您有更好的方法来为每种方法指定 Get 或 Post,我会全力以赴。
标签: c# asp.net-core asp.net-core-webapi .net-6.0 webapi