【发布时间】:2018-10-06 16:41:57
【问题描述】:
我正在关注WSO2 Enterprise Integrator Developer Advanced课程的labkit:https://wso2.com/training/enterprise-integrator-developer-advanced#request_training_enroll
我对 API 和 PROXY 的概念之间的区别存有疑问。
在这个 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