#azure #azure-api-management
#azure #azure-api-management
Вопрос:
После добавления нового API через WSDL и преобразования SOAP в REST сценарии политики Azure создали узел XML с nil:true и вызвали ошибку проверки схемы при отправке запроса.
Похоже, разница между minOccurs и nillable пока не обрабатывается отдельно. Любое место, которое я пропустил, чтобы исправить это?
Например, для поля с minOccours=»0″
<xs:element name="IntegratorId" type="xs:string" minOccurs="0">
Это сгенерированная политика:
{% if body.groundCloseRequest.clientDetail.integratorId %}
<IntegratorId>{{body.groundCloseRequest.clientDetail.integratorId}}</IntegratorId>
{% else %}
<IntegratorId xsi:nil="true" />
{% endif %}
И это вызовет последующую ошибку, если IntegratorId не указан в запросе.
Ошибка: cvc-elt.3.1: Атрибут ‘http://www.w3.org/2001/XMLSchema-instance ,nil’ не должен отображаться в элементе ‘IntegratorId’, поскольку свойство {nillable} для ‘IntegratorId’ равно false.
- Я тестирую сценарий для элемента с nillable=»true», текущий сценарий политики будет работать.
- В этом примере для minOccurs=0 просто НЕ создавайте IntegratorId в политике, чтобы устранить эту проблему. Но ручное исправление каждого поля в автоматически сгенерированных сценариях здесь не кажется привлекательным.
{% if body.groundCloseRequest.clientDetail.integratorId %}
<IntegratorId>{{body.groundCloseRequest.clientDetail.integratorId}}</IntegratorId>
{% else %}
<!-- just commit this line
<IntegratorId xsi:nil="true" />
-->
{% endif %}