【问题标题】:How to reuse methods in ApiController?如何重用 ApiController 中的方法?
【发布时间】:2019-05-09 06:12:37
【问题描述】:

我有一个名为 Garage 的对象,它可以包含许多 Vehicle 对象。 在 ApiController "GaragesController" 我有以下方法:

   [ProducesResponseType(typeof(IList<VehicleResponse>), 200)]
   [HttpGet("{GarageId}/vehicles")]

    public async Task<IActionResult> GetGarageVehicles([FromQuery] FindVehiclesByGarageQuery query)
    {
        return Ok(await _findVehiclesByGarageQueryHandler.Handle(query));
    }

    [ProducesResponseType(typeof(VehicleResponse), 200)]
    [HttpGet("{garageid}/vehicles/{vehicleid}")]

    public async Task<IActionResult> GetDepotGarage(int garageid, int vehicleid)
    {

        return Ok(await _findVehicleByGarageQueryHandler.Handle(new FindVehicleByGarageQuery
        {
            GarageId= garageid,
            VehicleId = vehicleid

        }));
    }

我还有一个名为 Depot 的对象,它可以包含许多车库。在即将到来的 DepotsController 中,有没有办法“重用” GarageController 中的方法,还是我必须从头再来?

【问题讨论】:

  • 您应该将您的代码移动到一个可重用的类中并从两个控制器中使用它。
  • 考虑到不同的路线不会有问题吗?
  • 您应该移动方法的内容,而不是可重用类中的方法本身。

标签: c# .net api asp.net-core controller


【解决方案1】:

您可以将可重用的代码段封装到一个方法中,并将其放置在您的控制器可以访问的类中。

此后,您可以在不同的控制器中创建具有特定路由的单独操作方法,并根据需要在操作方法的主体内调用可重用方法(放置在该单独的类中)。

通过这种方式,您可以重用代码并为不同的控制器保持不同的路由和操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 2019-07-26
    • 2016-04-16
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多