【问题标题】:What are the difference between a WSO2 API and Proxy?WSO2 API 和代理有什么区别?
【发布时间】:2018-10-06 16:41:57
【问题描述】:

我正在关注WSO2 Enterprise Integrator Developer Advanced课程的labkit:https://wso2.com/training/enterprise-integrator-developer-advanced#request_training_enroll

我对 APIPROXY 的概念之间的区别存有疑问。

在这个 labkit 中有一个关于如何构建 自定义连接器 的示例(该问题与连接器主题没有严格的关系)。

在示例中,它首先创建并部署一个自定义连接器,然后创建此自定义连接器并将其使用到此代理中:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
    name="googlebooks_listVolume"
    transports="https,http"
    statistics="disable"
    trace="disable"
    startOnLoad="true">
    <target>
        <inSequence>
            <property name="searchQuery"
expression="json-eval($.searchQuery)"/>
            <googlebooks.listVolume>
                <searchQuery>{$ctx:searchQuery}</searchQuery>
            </googlebooks.listVolume>
            <respond/>
        </inSequence>
        <outSequence>
            <log/>
            <send/>
        </outSequence>
    </target>
    <description/>
</proxy>

它工作正常,我的连接器被正确调用。但我问的是这样的代理和 API 之间的确切区别是什么。

我读到这个:Difference between Proxy Service and API Service in wso2 Esb

好的...使用 API 我可以定义多个资源来执行不同的 CRUD 操作,而使用代理我有一个入口点。事实是,考虑到这一点,舒适度似乎只有一个区别:

我需要多个 CRUD 操作?我实现了一个 API。我需要一个单独的隔离操作?我实现了一个代理。

但我觉得肯定还有其他的……

我知道 API 是基于 REST 概念的。我还读到 proxy 用于公开 SOAP Web 服务。

最后一个断言对我来说不是很清楚。要调用以前的 PROXY(实现类似 WS 的东西),我会这样做:

curl -v -X POST -d "{"searchQuery":"rabbit"}" -H "Content-Type: application/json" http://localhost:8280//services/googlebooks_listVolume

所以在我看来,这不是一个 SOAP 请求,因为我正在传递一个 JSON 对象,其中包含此 Web 服务使用的参数。

这也不是一个纯粹的 REST Web 服务,但我认为它绝对不是一个 SOAP 服务(据我所知,它使用 WSDL XML 消息。

那么,我错过了什么?

【问题讨论】:

    标签: jakarta-ee wso2 wso2esb wso2ei


    【解决方案1】:

    主要区别与您提到的相同。代理服务基本上是一个带有自己的 WSDL 文件的 SOAP 服务。 API 被视为 RESTful 服务,其资源映射到 HTTP 动词。

    那么如何使用上面给出的 curl 命令调用代理以及它是如何工作的?

    原因是您在 curl 请求中发送的 Content-Type 标头。 WSO2 EI 或 WSO2 ESB 了解各种内容类型的标头,并将读取指定格式的内容(在本例中为JSON),然后将其传递给底层消息中介引擎。即使服务器将其作为JSON 消息接受,但当消息传递到中介引擎(它完成所有与消息中介相关的工作)时,它会作为下面的soap 消息传递。所以实际上在中介引擎级别,代理服务仍然会收到一个肥皂消息,但在传输级别,我们可以发送任何支持的内容类型。调用代理服务的用户看不到此转换。所以这就是您可以将JSON 消息发送到基于SOAP 的代理服务的原因。

    【讨论】:

    • 啊,好吧,所以基本上定义了一个代理服务,发生的事情是 WSO2 ESB 允许我以 REST 友好的方式调用它,但随后它将我的“REST”请求转换为正确的 SOAP 请求,然后调用这个 SOAP WS?是吗?
    • 是的,基本上就是把soap消息交给下面的相关soap服务了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 2012-03-18
    相关资源
    最近更新 更多