Проблема с нулевым свойством после SOAP для REST в управлении API Azure

#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 %}