问题描述
昨天的博文中(https://www.cnblogs.com/lulight/p/17099179.html)介绍了使用Python SDK 来获取App Service的访问限制信息,那么如何调用REST API来实现呢?
问题解答
如大家所知,Azure 不管是SDK, 门户UI,或者是PowerShell命令方式对Azure中资源进行操作,都是通过REST API方式处理请求。所以,如果不知道当前操作使用的是一个接口时,最简单的方法是:通过浏览器打开Azure门户,同时开启开发者模式(F12),在Azure门户上执行想执行的操作。然后查看Network Trace。
比如,想知道App Service的Access Restrictions操作是调用的哪一个API,找到点击保存时候,浏览器发出的请求即可找到。如下图中标记的1,2,3处。
在找到对于的API URL后,就可以知道大概的调查方向了。
- Web Apps - Get Configuration:https://learn.microsoft.com/zh-cn/rest/api/appservice/web-apps/get-configuration
- Web Apps - Update Configuration:https://learn.microsoft.com/zh-cn/rest/api/appservice/web-apps/update-configuration
以上两个接口,就可以实现获取,更新App Service的访问限制信息需求。
PS: 因文档为Global Azure说明文档,所以中国区的 API URL为:https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web?api-version=2022-03-01
操作示例步骤为:
获取Web Apps 配置信息(其中包含Access Restrictions)
Request Method:GET
Request Authorization:如是临时性操作,可以通过浏览器(开发者模式F12-->Network Trace)获取到请求所携带的Authorization Token(注:这个值过期时间为1个消失)。
Request Body:无
示例截图
没有Token的效果图:
Token过期效果图:
仅仅更新Access Restrictions部分
Request Method:PATCH
Request Authorization:如是临时性操作,可以通过浏览器(开发者模式F12-->Network Trace)获取到请求所携带的Authorization Token(注:这个值过期时间为1个消失)。
Request Body:
{ "properties": { "ipSecurityRestrictions": [ { "ipAddress": "183.220.92.41/32", "action": "Allow", "tag": "Default", "priority": 200, "name": "111111" }, { "ipAddress": "Any", "action": "Deny", "priority": 2147483647, "name": "Deny all", "description": "Deny all access" } ] } }
特别注意:以上JSON内容为覆盖模式,如果需要在以前的数据中新添加,需要在Body中包含之前的数据。否则,PATCH操作完成后,就只会剩下Body中的信数据。
示例截图
参考资料
Web Apps - Get Configuration:https://learn.microsoft.com/zh-cn/rest/api/appservice/web-apps/get-configuration
Web Apps - Update Configuration:https://learn.microsoft.com/zh-cn/rest/api/appservice/web-apps/update-configuration