如何重用ApiController中的方法?

时间:2019-05-09 06:12:37

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

我有一个名为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中的方法,还是我必须重新使用它?

1 个答案:

答案 0 :(得分:0)

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

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

这样,您可以重复使用代码,并针对不同的控制器保留不同的路由和动作。