В качестве @David says и, как описано в Access one web api controller from another, Call WebApi controller from another controller и т. Д., Вы не должны создавать контроллеры в контроллерах.
HTTP API - это, как предполагается, очень тонкий слой для сопоставления HTTP-запроса бизнес-логике, возможно, с некоторой степенью аутентификации и авторизации.
Типичный метод GET в контроллере API должен выглядеть следующим образом:
public SomeModel Get(int id)
{
var model = _repository.Get(id);
return model;
}
Так что, если вы сделаете это:
public SomeModel Get(int id)
{
var database = new Database();
var record = database.SomeModels.Get(id);
record.FooProperty = DoSomeLogic();
// and so on
return record;
}
И в другом методе GetSomethingElse
, может быть, даже в другой контроллер, вы хотите получить доступ к этой логике, тогда вы должны изучить абстрагирование всего, что происходит в этом методе, в отдельный класс, в моем прежнем коде, на который ссылается переменная _repository
.
Затем вы можете повторно использовать логику между контроллерами и методами действий.
В общем, нет ничего плохого в создании экземпляра класса и вызове метода в этом классе. Является ли это хорошей идеей в вашем конкретном случае, мы не можем знать, не зная больше о вашей структуре. * Необычно * для методов контроллера вызывать другие методы контроллера, обычно они вместо этого ссылаются на общую логику резервного копирования. – David