Я работаю над шлюзом APIM в качестве интерфейса для Microsoft ADLS Gen 2 Rest API, в частности конечной точки «Обновление».
Пример URL-адреса для прямого вызова этой конечной точки (в обход шлюза) будет следующее:
PATCH MyFilesystem/path/to/file.txt?position=0&action=append
My OpenAPI 2.0 spe c документирует это следующим образом (несвязанные реквизиты были опущены):
/{filesystem}/{*path}:
parameters:
- name: filesystem
in: path
required: true
- name: path
in: path
required: true
patch:
parameters:
- name: action
in: query
required: true
- name: position
in: query
required: true
В APIM я ожидал бы, что это будет представлен как:
PATCH
Path: {filesystem}/{*path}
Query Parameters:
action
position
Однако это не так. Вместо этого он обновляет путь, чтобы включить необходимые параметры запроса в качестве параметров шаблона / пути:
PATCH
Path: {filesystem}/{*path}?action={action}&position={position}
Query Parameters:
(none)
Поскольку параметры шаблона подстановочного знака (например, {*path}
) должны быть last , APIM не будет смог найти эту конечную точку. Это автоматическое преобразование c сделало URL недоступным.
Если я импортирую свой файл spe c и использую редактор форм, чтобы вручную изменить параметры обратно на параметры запроса, он отлично работает. Хотя это хорошо в качестве доказательства концепции, на практике это невозможно; этот процесс будет полностью автоматизирован и в конечном итоге будет вызван файлом spe c.
Я видел, что следующий запрос не получил никакого продолжения: https://feedback.azure.com/forums/248703-api-management/suggestions/34740334-import-mandatory-query-parameters-as-query-rather
Есть ли какой-нибудь жизнеспособный обходной путь?