azure - 为什么 Azure 逻辑应用 HTTP 模块会修改响应负载?
问题描述
我正在尝试使用内置 HTTP 模块从带有逻辑应用程序的票务系统中获取数据。
使用邮递员进行测试时,我得到以下响应:
GET: https://ticketsystem/api/ticket/{{number}}
{
"tickets": [
{
"links": {
"data1": {
"id": 4
},
"data2": {
"id": 3
},
"data3": {
"id": 969
}
...
},
"data1Id": 4,
"data2Id": 3,
"data3Id": 969,
"att1": 1,
"att1": 2,
"att1": 3,
"att1": 4
....
}
]}
但是,当尝试通过 HTTP 逻辑应用程序模块时,这是响应:
{
"data1Id": 4,
"data2Id": 3,
"data3Id": 969,
"att1": 1,
"att1": 2,
"att1": 3,
"att1": 4
...
}
其他一切都一样,我什至尝试过一个新的逻辑应用程序和一个完全不同的天蓝色帐户。它仍然是一样的。
我查看了 http 标头响应,并且存在一些差异。
邮差:
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/vnd.api+json; charset=utf-8
Content-Encoding: gzip
Expires: -1
Vary: Accept-Encoding
Server: Microsoft-IIS/10.0
X-PS-ActionTime: 00:00:00.0022451
X-Frame-Options: deny
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Date: Wed, 16 Jun 2021 09:41:50 GMT
Content-Length: 819
Azure HTTP:
"Pragma": "no-cache",
"Vary": "Accept-Encoding",
"X-PS-ActionTime": "00:00:00.0022021",
"X-Frame-Options": "deny",
"X-XSS-Protection": "1; mode=block",
"Strict-Transport-Security": "max-age=31536000; includeSubDomains; preload",
"Cache-Control": "no-cache",
"Date": "Wed, 16 Jun 2021 09:43:27 GMT",
"Server": "Microsoft-IIS/10.0",
"Content-Type": "application/json; charset=utf-8",
"Expires": "-1",
"Content-Length": "1733"
看起来逻辑应用程序中缺少“Content-Encoding:gzip”,但我不知道为什么这会影响整体响应结构。还有如何解决这个问题。
我试图启用“允许分块”,但没有任何运气。
我知道我可能会创建一个 Azure 函数来解决这个问题,但我现在正试图避免这种情况。
有什么建议吗?
编辑
我使用 powershell Invoke-WebRequest 进行了测试,我发现这与逻辑应用程序 HTTP 操作的行为相同。在 powershell 中,标头也相同(缺少 Content-Encoding:gzip)和“Content-Type”=“application/json;charset=utf-8”
但是,当使用请求模块使用 python (3.9) 进行测试时,它会吐出与邮递员相同的数据。
Content-Type: application/vnd.api+json; charset=utf-8
Content-Encoding: gzip
我真的很想了解标头级别的区别,因为这是响应之间的唯一区别,也是 application/vnd.api+json 和 Content-Encoding: gzip 在这里所做的。