首页 > 解决方案 > 为什么 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 在这里所做的。

标签: azurehttplogicazure-logic-apps

解决方案



推荐阅读