2014-12-07 3 views
0

Я разрабатываю API и решаю, следует ли отличать внешние и внутренние вызовы. Я думал, что буду использовать один и тот же класс контроллера как для внутренних, так и для внешних API (например: ProductsController.cs (обрабатывать ресурс продукта)) с помощью разных методов (в виде разных параметров и различных возвращаемых объектов и различной авторизации) для внутренних и внешних потребление. Я думаю, что это может стать кошмаром для поддержания, если я хочу изменить api для внутреннего, но не хочу меняться для внутреннего, и это не очевидно, какие есть. Я думаю, что, возможно, другие файлы контроллеров будут легче поддерживать, но я знаю, что они имеют дело с одним и тем же ресурсом, поэтому у меня есть внутренняя борьба, которая будет лучшим направлением. Я также понимаю, что изменение api, скорее всего, приведет к изменению внутренней и внешней apis, и, таким образом, управление версиями также сыграет свою роль. Любой совет будет принят во внимание.Внутренние и внешние методы api

ответ

0

Вы можете создавать общедоступные (внешние) и частные (внутренние) папки и иметь контроллер продуктов в обоих случаях. Они могут быть несвязанными или совместно использовать базовый класс.

+0

У меня есть веб-API MVC, размещенный внутри организации (например, http: // myweb: 123), который доступен только изнутри сети. Как я могу сделать так, чтобы люди извне могли также получить к нему доступ? – Si8

1

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

Для меня совершенно очевидно, что вам нужно их разделить.

Вы можете поместить их в разные namespaces или даже разные Areas. Если у вас есть общая логика, вы можете получить это в базовом классе .

+0

Да, меня больше беспокоит изменение интерфейса api, и оно влияет на внешний. Они представляют собой один и тот же фактический ресурс, поэтому я затрудняюсь сделать его другим контроллером. – CSharpAtl

+0

Да, но из моего понимания вы обслуживаете один и тот же ресурс двумя разными способами. Хотя в Репозитории это может быть тот же ресурс, ваш API обслуживает его как два разных ресурса. –

+0

служит только для другого вида объекта. – CSharpAtl

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