在发布版本中隐藏一个 api 端点

我正在从事 Asp.net web api 项目。我最近使用config.Services.GetApiExplorer();


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


我能想到的一种方法是使用注册路线


#if debug


routes.MapRoute(

"documentation",

"documentation/help", 

new { controller = "apiexplorer", action

= "Index" }

);


#endif


富国沪深
浏览 163回答 2
2回答

偶然的你

有两个属性可以隐藏 API 端点:[ApiExplorerSettings(IgnoreApi = true)][NonAction]public async Task<void> PrivateAPI(){...}但是对于您的情况,我可能会创建一个新属性来检查环境并将该属性应用于您的控制器方法。注入“IHostingEnvironment”类,然后使用 .IsDevelopment() 方法。

千巷猫影

我假设您的开发人员即使在生产环境中仍然需要访问该端点(用于健全性检查,......与开发和暂存环境相同)。如果是这种情况,请创建一个新策略并将您的开发人员(或您希望向其公开端点的任何其他人)置于该策略之下。[Authorize(Policy = "JustDevelopersPolicy")]public async Task<void> PrivateAPI(){...}仅供参考,它可能会通过调用该端点来更改响应,因此,如果未经授权的人调用它,他们将获得 401 而不是 404
打开App,查看更多内容
随时随地看视频慕课网APP