2015-08-17 3 views
0

Достаточно ли приемлемо повторно использовать публичную работу API между методами?Операции HTTP API, вызывающие друг друга

Скажите, что у меня есть один метод (GET api/something), и в этом методе я называю внутренним (GET api/somethingElse).

Внутренне это означает, что я создаю экземпляр класса и вызываю метод.

+5

В общем, нет ничего плохого в создании экземпляра класса и вызове метода в этом классе. Является ли это хорошей идеей в вашем конкретном случае, мы не можем знать, не зная больше о вашей структуре. * Необычно * для методов контроллера вызывать другие методы контроллера, обычно они вместо этого ссылаются на общую логику резервного копирования. – David

ответ

3

В качестве @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.

Затем вы можете повторно использовать логику между контроллерами и методами действий.

+0

Я думаю, что все комментарии прояснили и подтвердили мои чувства, например, –

+1

Просто попытался подчеркнуть этот момент: API веб-сервиса - это просто точка доступа общего доступа, которая настраивает маршрутизацию, аутентификацию/авторизацию и некоторые другие конкретные действия веб-службы для бизнеса layer - обычно API библиотеки классов. API-интерфейс библиотеки классов не имеет ограничений на доступ или маршрутизацию, поэтому API веб-службы необходим. – crush

Смежные вопросы