我可以让Swagger界面显示在已部署的Azure Web API上吗?

kpbwa7wx  于 2023-01-30  发布在  其他
关注(0)|答案(2)|浏览(112)

当在VisualStudio2022中创建API并在本地对其进行测试时,可以获得一个基于OpenAPI定义的方便的Swagger页面,以测试所有HTTP端点。
然而,当部署并尝试访问{path-to-api}/swagger时,它返回404 Not Found错误,即使在localhost上,API和数据库都位于我自己的计算机上。即使数据库位于Azure云中,就此而言,如果我将Azure SQL数据库连接字符串放入appsettings.json,它也可以工作。
那么,有没有一种方法可以实现这一点,最好是没有太多的麻烦?或者我想这样做是错误的,开发人员主要是在本地测试他们的API吗?因为我希望Swagger API在线只用于测试。
问题是如何将swagger功能引入云计算,这是否可能,是否是一个好的实践?

svgewumm

svgewumm1#

如果查看启动,您会注意到swagger只在开发会话期间通过if检查加载,将其注解掉,或者根据环境扩展它,将允许发布的版本在目标主机上生成页面。

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

我通常在第一次发布或在开发/测试环境中查看它的运行情况时这样做,一旦不需要它,我就取消它的注解。
此外,它可能实际上是可行的(打开)在开发或UAT服务器,因为一个是 * 也 * 发布 * 开放API* 它到APIM(Azure api管理器),它采取的api和生成自己的开发环境;远离最初的出版物。
同样,一旦发布,它不是 * 默认 * 页面,人们仍然必须路径到它,如.../swagger/index.html

icnyk63a

icnyk63a2#

我放弃了将Swagger接口和我的API沿着部署到Azure的使命。让HTTP请求方法如此直观地对所有人可用是不好的安全实践。所以对于我的问题 * 开发人员大多在本地测试他们的API吗 * 的答案显然是肯定的。
我想知道我是否应该删除这个问题,但我想让它仍然存在,以防其他人正在考虑做同样的事情-公开一个API在线与斯瓦格UI。

相关问题