【发布时间】:2022-02-02 19:14:55
【问题描述】:
有没有办法在客户端和 api 之间共享 webapi ActionNames? 我尝试过这样的事情:
public static class Orders
{
public const string GetAllOrders = "GetOrders";
public const string GetUserOrders = "GetUserOrders";
public const string GetCustomerOrders = "GetCustomerOrders";
}
然后在api中:
[HttpGet]
[ActionName(Orders.GetAllOrders)]
public IActionResult GetAllOrders()
{
return BadRequest("No records found");
}
[HttpGet]
[ActionName(Orders.GetUserOrders)]
public IActionResult GetUserOrders(int id)
{
return BadRequest("No records found");
}
[HttpGet]
[ActionName(Orders.GetCustomerOrders)]
public IActionResult GetCustomerOrders(int id)
{
return BadRequest("No records found");
}
但是我得到了这个错误:
Swashbuckle.AspNetCore.SwaggerGen.SwaggerGeneratorException: Conflicting method/path combination "GET api/Order" for actions - LPD_Api.Controllers.OrderController.GetAllOrders (LPD_Api),LPD_Api.Controllers.OrderController.GetUserOrders (LPD_Api),LPD_Api.Controllers.OrderController.GetCustomerOrders (LPD_Api). Actions require a unique method/path combination for Swagger/OpenAPI 3.0. Use ConflictingActionsResolver as a workaround
任何提示如何共享名称以避免客户端命名错误?
【问题讨论】:
-
你试过 [HttpGet(Orders.GetCustomerOrders)] 吗?
-
感谢您的帮助 - 它就像一个魅力 :)
-
您也可以使用 nameof 获取名称。
public const string GetAllOrders = nameof(Controller.GetAllOrders);在这种情况下,即使有人重命名方法,您也将拥有最新的名称
标签: c# .net blazor asp.net-core-webapi