我们是否可以在没有作为标题的一部分发送的订阅密钥的情况下公开API管理端点?
可以通过与API相关联的产品实现此目的。
在Publisher Portal中,转到产品菜单,然后选择与API关联的产品(甚至仅为没有订阅密钥的用法设置新产品)。然后选择设置选项卡并取消选中要求订阅复选框,然后保存设置。
请注意,执行此操作后,您将丢失与不同用户相关的所有指标以及您可能希望以不同方式应用于不同消费者的任何其他功能。
另一个选择是在URL中发送订阅密钥,如果您转到开发人员门户并下载API的Swagger文档,您将看到:
{
"name": "subscription-key",
"in": "query",
"description": "subscription key in url",
"type": "string"
},
{
"name": "Ocp-Apim-Subscription-Key",
"in": "header",
"description": "subscription key in header",
"type": "string"
}
API管理还接受查询字符串中的订阅密钥。
我尝试创建一个不需要订阅的新产品。我更新了我的一个API,使其仅与此新产品相关联。当我测试它时,我得到一个400级错误(我认为是401)抱怨没有订阅ID的请求。
我联系了Azure支持部门,发现这是一个已知的bug。复制/粘贴响应:
在调查您的问题时,您的APIM服务似乎遇到了已知的错误。由于此错误,将产品从关闭(需要订阅)转为打开(不需要订阅)并不总是正常生效。但是,可以通过重新启动托管APIM服务的VM轻松解决此问题。您可以通过转到APIM下左侧导航菜单中的VNET刀片并按下顶部的“应用网络配置”按钮来执行此操作。这将重新启动Dev SKU VM,并且应该使您处于适当的位置以不需要订阅密钥。
重启后,APIM应该关闭大约5分钟,15分钟是重置VNET所需的最大值。当APIM重新启动时,它可能需要额外的少量时间来自行解决(可能需要5-10分钟),然后按照需要进行操作应该会很好。