当我尝试保存具有多个URI查询参数的WSO2 ESB API时,为什么会出现此语法错误?

时间:2017-12-13 15:50:49

标签: wso2 wso2esb wso2ei

我在尝试将多个请求查询参数插入REST API的URI时遇到以下问题。

我有以下情况。使用带有单个查询参数的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}">
    ...............................................................
    ...............................................................
    ...............................................................

但是如果我有多个查询参数除以&amp; 符号,就像这样:

<?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,我将收到此语法错误消息:

enter image description here

为什么呢?可能是什么问题呢?我错过了什么?我是否可能以某种方式逃脱&amp; 角色?如何解决此问题并在我的API中使用多个查询参数?

1 个答案:

答案 0 :(得分:2)

由于这是一个XML配置文件,您需要将&转义为&amp;

在XML中,&表示XML实体的开头(由;终止)。因此,要在文档中使用实际的&,您需要将其转义。

关于错误,在您的文档中,解析器将q2视为实体的名称,但停止在=进行解析,并得出结论:您有语法错误,因为它没有'看到;结束实体。