在我所有的專案中,我將這段代碼放在我的控制器頂部:
[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 的頂部,當我決定將所有路由更改為新路由時,我需要替換項??目中的所有 RouteAttributes。
我尋找全域解決方案,例如在我的 program.cs 檔案中是這樣的:
app.MapControllerRoute(
name: "default",
pattern: "api/{controller}/{action}");
問題是當我從我的 API 中洗掉 RouteAttribute 時,我無法讓這段代碼作業。
uj5u.com熱心網友回復:
只需按照這個關于全域路由前綴的簡單教程,在
我的程式.cs
builder.Services.AddMvc(opt =>
{
opt.UseCentralRoutePrefix(new RouteAttribute("core/v1/[controller]/[action]"));
}
).AddControllersAsServices().AddNewtonsoftJson();
uj5u.com熱心網友回復:
我為此搜索了幾個小時,畢竟我沒有找到任何簡單的解決方案來為 API 創建良好、簡單、快速的全球路由,然后我自己嘗試了。
解決方案 1: 您可以為您的 API 創建一個基類并將您的路由放在該檔案中,然后您只在所有 API 中從該類繼承。
APIBase.cs 檔案:
[ApiController]
[Route("api/[controller]/[action]")]
public class APIBase: ControllerBase
{
}
下一步:如果您需要在 URL 中包含 id(或任何其他引數),那么您應該僅為該方法添加 RouteAttribute。
ValuesController.cs 檔案:
public class ValuesController : APIBase
{
[HttpGet]
public IActionResult GetTest1()
{
return Ok();
}
[HttpGet]
[Route("{id?}")]
public IActionResult GetTest2(int id)
{
return Ok("value was " id);
}
[HttpPost]
public IActionResult PostTest1(string Request)
{
return Ok("value was " Request);
}
}
編輯 :
解決方案 2:您可以在專案中創建一個字串 const 并在所有 API 中使用它(@Serge 建議)
HelperStatic.cs 檔案:
public static class HelperStatic
{
public const string BaseAPIRoute = "api/[controller]/[action]";
}
ValuesController.cs 檔案:
[ApiController]
[Route(HelperStatic.BaseAPIRoute)]
public class ValuesController : ControllerBase
{
[HttpGet]
public IActionResult GetTest1()
{
return Ok();
}
[HttpGet]
[Route("{id?}")]
public IActionResult GetTest2(int id)
{
return Ok("value was " id);
}
[HttpPost]
public IActionResult PostTest1(string Request)
{
return Ok("value was " Request);
}
}
你的招搖將是這樣的(在這兩種解決方案上):

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/475747.html
標籤:C# asp.net 核心 asp.net-core-webapi .net-6.0 网页API
上一篇:XUnit測驗起訂量失敗
