1

我正在开发一个 Asp.net web api 项目。我最近使用创建了一个文档端点config.Services.GetApiExplorer();

什么是在生产中隐藏此端点并仍使其可供我团队中的所有其他开发人员使用的最佳方法。

我能想到的一种方法是使用

#if debug

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

#endif
4

2 回答 2

4

有两个属性可以隐藏 API 端点:

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

但是对于您的情况,我可能会创建一个新属性来检查环境并将该属性应用于您的控制器方法。注入 'IHostingEnvironment' 类,然后使用 .IsDevelopment() 方法。

于 2019-04-26T02:47:31.680 回答
0

我假设您的开发人员即使在生产环境中仍然需要访问该端点(对于完整性检查,......与开发和登台环境相同)。如果是这种情况,请创建一个新策略并将您的开发人员(或您想要向其公开端点的任何其他人)置于该策略之下。

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

仅供参考,它可能会通过调用该端点来更改响应,因此,如果未经授权的人调用它,他们会得到 401 而不是 404

于 2019-04-26T06:03:49.027 回答