Почему я получаю эту синтаксическую ошибку, когда пытаюсь сохранить WSO2 ESB API с несколькими параметрами запроса URI?

У меня возникла следующая проблема с попыткой вставить параметр запроса с несколькими запросами в URI REST API.

У меня следующая ситуация. Использование URL-адреса с одним параметром запроса (process_phase_id={process_phase_id}) работает нормально, примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<api context="/enutrifood/bylocation" name="ENutriFoodByLocation" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET" uri-template="/{localizationId}/messages?process_phase_id={process_phase_id}">
    ...............................................................
    ...............................................................
    ...............................................................

Но если у меня есть несколько параметров запроса, разделенных символом &, что-то вроде этого:

<?xml version="1.0" encoding="UTF-8"?>
<api context="/enutrifood/bylocation" name="ENutriFoodByLocation" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET" uri-template="/{localizationId}/messages?process_phase_id={process_phase_id}&q2={v2}">
    ...............................................................
    ...............................................................
    ...............................................................

Как видите, теперь ресурс имеет 2 параметра:

<resource methods="GET" uri-template="/{localizationId}/messages?process_phase_id={process_phase_id}&q2={v2}">

Теперь, если я сохраню свой API, я получаю это сообщение об ошибке синтаксиса:

введите здесь описание изображения

Почему? В чем может быть проблема? Что мне не хватает? Может быть, мне каким-то образом избежать символа &? Как я могу решить эту проблему и использовать несколько параметров запроса в моем API?


person AndreaNobili    schedule 13.12.2017    source источник


Ответы (1)


Поскольку это XML-файл конфигурации, вам нужно заменить & на &amp;.

В XML & указывает на начало объекта XML (который заканчивается ;). Таким образом, чтобы в вашем документе было настоящее &, вам нужно его экранировать.

Что касается ошибки, то в вашем документе синтаксический анализатор видит q2 как имя объекта, но прекращает синтаксический анализ на = и заключает, что у вас есть синтаксическая ошибка, поскольку он не видел ; в конце объекта.

person Mark Rotteveel    schedule 13.12.2017