Mam api a w nim kontroler i serwisy. W response chciałbym zwrocic obiekt na który składają się dane z kilku innych obiektów i mam pytanie w którym miejscu łączyć te dane w obiekt wynikowy, czy wszsytko łączyć w kontrolerze, czy np powinienem miec jeszcze jeden serwis albo kolejną metodę w serwisie ktory wyciagnie z obiektow co potrzeba i zwroci obiekt wynikowy?
Czy lepiej robić tak:
public class MyController : Controller
{
// ...
public async Task<IActionResult> GetData(int id)
{
var data1 = await service.GetData1();
var data2 = await service.GetData2();
var data3 = await service.GetData3();
var obj= new ResultObject();
obj.Prop1 = data1.A1;
obj.Prop2 = data2.A2;
obj.Prop3=data3.A3;
var result = mapper.Map<Result>(obj);
return Ok(result);
}
}
czy tak:
public class MyService()
{
public async Task<Data1> GetData1()
{
// ...
}
public async Task<Data2> GetData2()
{
// ...
}
public async Task<Data3> GetData3()
{
// ...
}
public async Task<ResultObject> GetResult()
{
var data1 = await GetData1();
var data2 = await GetData2();
var data3 = await GetData3();
var obj= new ResultObject();
obj.Prop1 = data1.A1;
obj.Prop2 = data2.A2;
obj.Prop3=data3.A3;
return obj;
}
}
public class MyController : Controller
{
// ...
public async Task<IActionResult> GetData(int id)
{
var data = await service.GetResult();
var result = mapper.Map<Result>(data);
return Ok(result);
}
}
czy jeszcze inaczej? :)