0

我已经阅读这个文档两个多星期了,仍然很难理解一些概念。

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

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

我知道可以通过 访问它Property Mediator,但本文档无助于理解任何内容。

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

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

    如何获得query1和的值query2

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

  3. 如果用户使用这样的正文提出POST请求:JSON

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

    如何获取这些变量的值?

  4. 用户POST使用正文提出请求XML

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

    如何获得这些值?

  5. 下一个问题。有时用户会在请求的标头中发送一些变量。如何得到它们?

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

4

2 回答 2

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

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

于 2017-10-24T07:32:31.107 回答
0

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

企业服务集成

服务编排

宁静的整合

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

要从查询中获取信息,如下所示:

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 调解器可用于处理 json 和 xml 正文并转换它们。处理以下json

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

我们可以使用 payloadFactory 调解器,如下所示:

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

同样,这个中介和其他中介也可用于处理POST请求中的 xml。

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

于 2017-08-13T08:04:01.677 回答