Используя политики в Azure API Management, я пытаюсь переименовать параметр запроса, но он не работает.Если я изменю copy-unmatched-params = "false" на copy-unmatched-params = "true", то это сработает, но поведение таково, что все несопоставленные параметры будут переданы бэкэнд-API, что позволит клиентам вводить свой собственный запроспараметры в запросе бэкэнда, который нам не нужен.
Все остальное в порядке.
Я хочу преобразовать входящий запрос, который выглядит следующим образом:
https://{site}/search?query=dylan
Кому:
https://{backend-site}documents?api-version=2018-1-11&amount=1000&searchFields=Album,Artist&search=dylan
Единственная часть, которая не работает, это преобразованиепараметр запроса будет называться «поиск» вместо запроса, не позволяя передавать все параметры из входящей строки запроса.Как я могу это исправить?
<policies>
<inbound>
<rewrite-uri template="/" copy-unmatched-params="false" />
<set-header name="api-key" exists-action="override">
<value>THIS-IS-API-KEI</value>
</set-header>
<set-query-parameter name="api-version" exists-action="override">
<value>2018-1-11</value>
</set-query-parameter>
<set-query-parameter name="amount" exists-action="override">
<value>1000</value>
</set-query-parameter>
<set-query-parameter name="searchFields" exists-action="override">
<value>Album,Artist</value>
</set-query-parameter>
<set-query-parameter name="search" exists-action="override">
<value>@(context.Request.Url.Query.GetValueOrDefault("query"))</value>
</set-query-parameter>
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>