簡體   English   中英

Azure APIM 重寫 url 沒有后綴 url

[英]Azure APIM rewrite url to have no suffix url

我在 APIM 中有一個 API 包含不同的操作。 這些操作之一稱為例如testOp

testOp將發送給它的請求轉發到 azure 中的 function 應用程序 (FA)。 我沒有在策略中明確寫入 FA URL,而是決定將其寫入名為fa-url的命名值中。 因此 API 策略如下所示:

<policies>
    <inbound>
        <base />
        <set-backend-service base-url="{{fa-url}}" />
        <rewrite-uri template="/" />
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

此命名值是通過 ARM 模板創建的,該模板將此命名值的值設置為 FA 的觸發器 URL。 這是 ARM 代碼:

 {
      "properties": {
        "tags": [],
        "secret": true,
        "displayName": "fa-url",
        "value": "[listsecrets(resourceId(parameters('faRG'), 'Microsoft.Web/sites/functions', parameters('functionAppName'), parameters('functionName')), variables('apiFuncApp')).trigger_url]"
      },
      "name": "[concat(parameters('ApimServiceName'), '/fa-url')]",
      "type": "Microsoft.ApiManagement/service/namedValues",
      "apiVersion": "2021-01-01-preview"
    },

這個 Arm 模板和命名值將生成一個 url,看起來類似於:

https://fa-name.xx.companything.net/api/realFunctionname?code=123456=

所以,這個 url 以一個以等號結尾的查詢參數結尾。 現在,問題是:這個 API 操作( testOp )在其定義中有一個 URL

testOp 看起來與此類似:

在此處輸入圖像描述 在另一張圖片中: 在此處輸入圖像描述

因此,當我嘗試通過此操作向 FA 發送請求時,我收到404 Not Found401 Unauthorized錯誤。 查了trace,原因基本是因為rewrite URL在fa URL的末尾加了一個'/'。 所以而不是發送到:

https://fa-name.xx.companything.net/api/realFunctionname?code=123456=

它發送到

https://fa-name.xx.companything.net/api/realFunctionname?code=123456=/

如果我刪除了重寫 URL function,我仍然會收到錯誤,因為現在它將發送到:

https://fa-name.xx.companything.net/api/realFunctionname?code=123456=/testOp

有什么方法可以防止在后端 URL 中添加任何后綴? 或者你有任何其他建議來解決這個問題嗎?

注意:我還嘗試將重寫 URL 設置為空字符串,但 azure 在我這樣做時拒絕保存策略。

好的,看來我唯一需要做的就是使用這個重寫策略:

<rewrite-uri template="?" />

這將令人驚訝地使 URL 看起來完全符合我的要求,即:

https://fa-name.xx.companything.net/api/realFunctionname?code=123456=

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM