首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >URL参数wso2esb

URL参数wso2esb
EN

Stack Overflow用户
提问于 2016-12-13 08:23:29
回答 1查看 279关注 0票数 0

我在esb中创建了一个API,如下所示:

代码语言:javascript
运行
复制
<api xmlns="http://ws.apache.org/ns/synapse" name="contact_v1" 
   <resource methods="GET" uri-template="/contact-by-email?email={query.param.email}" inSequence="crm_contact-by-email_v1" outSequence="crm_contact-by-email_v1" faultSequence="crm_contact-by-email-error_v1"/>
</api>

在我的序列中,我检索请求参数,电子邮件,就像这样。

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="crm_contact-by-email_v1" xmlns="http://ws.apache.org/ns/synapse">
    <in>

        <script language="js"><![CDATA[try {
                    var randomnumber1=Math.floor((Math.random() * 10000) + 1);
                    mc.setProperty("sessionnumber", randomnumber1.toString());
                } catch(e) {
                }]]></script>

        <property expression="$axis2:REST_URL_POSTFIX" name="myURL"
            scope="default" type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/>
        <script language="js"><![CDATA[try {
            var log = mc.getServiceLog();
            var email = mc.getProperty('query.param.email');
            log.info("emailxxxxxx "+email);

            } catch(e) {}]]></script>

    </in>
    <out>
        <send/>
        <drop/>
    </out>
</sequence>

当我用这样的编码电子邮件提出请求时

代码语言:javascript
运行
复制
test%40test.com

它能解决机智的问题。

但是当我提出一个请求时

代码语言:javascript
运行
复制
test@test.com

它显示此错误。

代码语言:javascript
运行
复制
<tp:fault xmlns:tp="https://xxxxxxx.com/"><tp:code>404</tp:code><tp:type>Status report</tp:type><tp:message>Not Found</tp:message><tp:description>The requested resource (//contact-by-email?email=test@test.com) is not available.</tp:description></tp:fault>

你知不知道

诚挚的问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-14 17:30:01

字符@是URI-模板的RFC规范中用于分隔符的保留字符(如果您感兴趣,我可以解释更多)。因此,为了允许@作为电子邮件参数的值,使用{+query.param.email}定义uri-模板如下所示。

代码语言:javascript
运行
复制
<api xmlns="http://ws.apache.org/ns/synapse" name="contact_v1" 
   <resource methods="GET" uri-template="/contact-by-email?email={+query.param.email}" inSequence="crm_contact-by-email_v1" outSequence="crm_contact-by-email_v1" faultSequence="crm_contact-by-email-error_v1"/>
</api>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41116506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档