azure apim set-body 策略问题中的响应更改

Posted

技术标签:

【中文标题】azure apim set-body 策略问题中的响应更改【英文标题】:Response change in azure apim set-body policy issue 【发布时间】:2020-09-24 06:56:42 【问题描述】:

我正在使用 set-body 来操纵响应 我的实际反应如下


  "collection": 
    "version": "1.0",
    "href": "https://conferenceapi.azurewebsites.net:443/speakers",
    "links": [],
    "items": [
      
        "href": "https://conferenceapi.azurewebsites.net/speaker/1",
        "data": [
          
            "name": "Name",
            "value": "Scott Guthrie"
          
        ],
        "links": [
          
            "rel": "http://tavis.net/rels/sessions",
            "href": "https://conferenceapi.azurewebsites.net/speaker/1/sessions"
          
        ]
      
]


我想要这样的回应


    "customer": 
        "customerID": "1.0"
    

但我得到了类似的回应


    "customer": 
        "customerID":
    

我在出站中使用了以下代码

<outbound>
        <set-header name="Content-Type" exists-action="append">
            <value>application/json</value>
        </set-header>
        <set-body template="liquid">
    "customer": 
        "customerID": body.collection.version
    
</set-body>
    </outbound>

你能告诉我哪里出错了

【问题讨论】:

【参考方案1】:

您必须在入站部分执行此操作。

出站部分确实包含请求正文。

我能够重现您的问题: 当请求的 Content-Type 丢失时,它不起作用。 它正在处理请求 Content-Type application/json

顺便说一句: 对于有效的 JSON,需要引号: "customerID": "body.collection.version"

【讨论】:

以上是关于azure apim set-body 策略问题中的响应更改的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Set-Body 策略无法识别我的 POST 正文?

Azure APIM 睡眠或延迟策略

从 APIM 策略获取 Azure 表存储实体

APIM:从 Azure DevOps CD 管道中的 Azure Blob 存储中检索策略 XML 失败,如收到错误,如提供的链接格式错误

Azure APIM 策略

使用 Azure APIM 策略处理表单数据