WSO2 EI,在Sequence中获取HTTP请求的消息内容

WSO2 EI, getting HTTP request's message contents inside Sequence

我一直在看书this documentation more than two weeks,有些概念还是很难理解。

让我们考虑简单的情况。 用户向我们的 API 发出请求,然后 EI 必须根据请求正文调用特定端点并显示响应

现在主要问题是获取HTTP请求的数据。

我知道可以通过 Property Mediator 访问它,但是 this documentation 对理解任何东西都没有帮助。

  1. 如果用户提出这样的 GET 请求:

    https://my-ei-domain.com:8280/myapi/mymethod?query1=1&query2=2
    

    如何获得 query1query2

  2. 的值
  3. 如果用户使用 urlencoded 表单数据发出 POST 请求,如何获取它们?

  4. 如果用户使用 JSON 正文发出 POST 请求,如下所示:

    {
       "var1": "one",
       "var2": 2,
       "var3": {
             "var3_var1": "two"
        }
    }
    

    如何获取这些变量的值?

  5. 用户使用 XML 正文发出 POST 请求:

    <body>
         <var1>1</var1>
         <var2>2</var2>
         <var3>
             <var1>3</var1>
         </var3>
    <body>
    

    如何获取这些值?

  6. 下一题。有时用户会在请求的 Headers 中发送一些变量。如何获得?

文档中没有很好地描述这些情况。即使是,它们也只是分散在多个页面上。

您的问题很长,我可以看出您正在请求有关如何实现这些问题的教程。希望以下Wso2相关教程对您有所帮助:

Enterprise Service Integration

Service Orchestration

Restful Integration

作为例子,让我解释一下你的几个问题的答案:

从如下查询中获取信息:

http://127.0.0.1:8280/pizzashop/api/menu/pizza?val=thin&type=crust

您可以像这样使用 属性 中介:

<property name="Type" expression="$ctx:query.param.type"></property>
<property name="Val" expression="$ctx:query.param.val"></property>

WSO2 使用调解器来完成大部分任务。例如 payloadFactory mediator 可用于处理 json 和 xml 主体并转换它们。处理以下json

 { "payment":
        {
            "amount_lkr": "175.00",
            "card_no": "1234-5678-9876-5432"
        }
    }

我们可以如下使用 payloadFactory 中介器:

 <payloadFactory media-type="json">
             <format>{"purchaseInformation": {"amount": "","cc": ""}}</format>
             <args>
                    <arg evaluator="json" expression="$.payment.amount_lkr"></arg>
                    <arg evaluator="json" expression="$.payment.card_no"></arg>
             </args>
    </payloadFactory>

同样,此调解器和其他调解器也可用于处理 xml 以及 POST 请求。

请学习教程。细节太宽泛,无法在一个答案中解释

  1. 如果用户发出这样的 GET 请求...。按照中所述使用 文档 URL 模板或 URI 映射 https://docs.wso2.com/display/EI611/Working+with+APIs
  2. 如果用户使用 urlencoded 表单数据发出 POST 请求,如何获取它们... 没有其他方法可以获取上述数据。实际上,Content-Type 用于识别数据的传输方式,我认为(因为 ESB 服务器使用广泛使用的 apache http 核心库)将能够处理参数值。无论如何,这很容易重现。创建休息服务,发送 urlencode 请求,看看它是如何工作的。
  3. 如果用户使用这样的 JSON 正文发出 POST 请求... 文档中描述了如何使用 json 的规则在突触引擎中 https://docs.wso2.com/display/ESB480/JSON+Support(段落 从 JSON 有效负载访问内容)
  4. 用户使用XML正文POST请求休息服务?网络服务?无论如何,xpath 通常用于访问 xml 文档的某些部分。但是,突触引擎必须识别接收到 xml 文档并对其进行解析。引擎依赖于 Content-Type,详情在这里 https://docs.wso2.com/display/ESB480/Working+with+Message+Builders+and+Formatters
  5. 下一题。有时用户会在请求的 Headers 中发送一些变量。如何获得? 在这里

大多数答案都在文档中或很容易在网上找到。