Скрыть конечную точку API в сборке релиза - PullRequest
1 голос
/ 26 апреля 2019

Я работаю над проектом веб-API Asp.net. Недавно я создал конечную точку для документации, используя config.Services.GetApiExplorer();

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

Один из способов, который я могу придумать, - это зарегистрировать маршрут, используя

#if debug

routes.MapRoute(
"documentation",
"documentation/help", 
new { controller = "apiexplorer", action
= "Index" }
);

#endif

Ответы [ 2 ]

2 голосов
/ 26 апреля 2019

Существует два атрибута, которые могут скрывать конечную точку API:

[ApiExplorerSettings(IgnoreApi = true)]
[NonAction]
public async Task<void> PrivateAPI()
{
...
}

Но для вашего случая я, вероятно, создаю новый атрибут, чтобы проверить среду и применить этот атрибут к вашему методу контроллера.Вставьте класс IHostingEnvironment, затем используйте метод .IsDevelopment ().

0 голосов
/ 26 апреля 2019

Я предполагаю, что вашим разработчикам по-прежнему необходимо иметь доступ к этой конечной точке даже в производственной среде (для проверки работоспособности, ... такой же, как dev и промежуточная среда).Если это так, создайте новую Политику и поместите своих разработчиков (или любого другого человека, которому вы хотите предоставить свою конечную точку) под эту политику.

[Authorize(Policy = "JustDevelopersPolicy")]
public async Task<void> PrivateAPI()
{
...
}

К вашему сведению, это может изменить ответ, вызвавконечная точка, поэтому, если ее называет неавторизованный человек, он получает 401 вместо 404

...