如何在 WSO2 ESB 中集成 RESTful 服务
How to Integrate RESTful service in the WSO2 ESB
我正在尝试通过 WSO2 ESB 创建一个集成层(RESTful API 服务集成)。
端点 - http://www.thomas-bayer.com/
上下文-/sqlrest
和
URI 模板 - /CUSTOMER/3
( API 端点 - www.thomas-bayer.com/sqlrest/CUSTOMER/3 )
在我尝试使用 ( http://localhost:8280:/sqlrest/CUSTOMER/3 )
调用 api 请求之后
我得到的响应是完整的 HTML,带有 404 错误代码,而不是 XML 数据。
您提供的上下文不需要是来自实际端点的任何内容 URL。
例如,您可以将上下文定义为myapi
。然后你有2个选择。
选项 1:
配置端点为http://www.thomas-bayer.com/
然后您可以将您的 API 称为 http://localhost:8280/myapi/sqlrest/CUSTOMER/3
选项 2:
配置端点为http://www.thomas-bayer.com/sqlrest/
然后您可以将您的 API 称为 http://localhost:8280/myapi/CUSTOMER/3
您可以在 WSO2 ESB 中使用此 API:
<?xml version="1.0" encoding="UTF-8"?>
<api xmlns="http://ws.apache.org/ns/synapse"
name="sqlrestAPI"
context="/sqlrest">
<resource methods="GET" protocol="http" uri-template="/CUSTOMER/{id}">
<inSequence>
<log level="full"/>
<send>
<endpoint>
<http method="GET"
uri-template="http://www.thomas-bayer.com/sqlrest/CUSTOMER/{uri.var.id}"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
</outSequence>
<faultSequence/>
</resource>
</api>
然后调用它(在我的例子中是 OFFSET = 3):
curl -v http://localhost:8283/sqlrest/CUSTOMER/3
回复:
* About to connect() to localhost port 8283 (#0)
* Trying 127.0.0.1...
* connected
* Connected to localhost (127.0.0.1) port 8283 (#0)
> GET /sqlrest/CUSTOMER/3 HTTP/1.1
> User-Agent: curl/7.25.0 (i386-pc-win32) libcurl/7.25.0 OpenSSL/0.9.8u zlib/1.2.6 libssh2/1.4.0
> Host: localhost:8283
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/xml
< Date: Thu, 26 Jan 2017 16:40:08 GMT
< Transfer-Encoding: chunked
<
<?xml version="1.0"?><CUSTOMER xmlns:xlink="http://www.w3.org/1999/xlink">
<ID>3</ID>
<FIRSTNAME>Michael</FIRSTNAME>
<LASTNAME>Clancy</LASTNAME>
<STREET>542 Upland Pl.</STREET>
<CITY>San Francisco</CITY>
</CUSTOMER>* Connection #0 to host localhost left intact
* Closing connection #0
我正在尝试通过 WSO2 ESB 创建一个集成层(RESTful API 服务集成)。
端点 - http://www.thomas-bayer.com/
上下文-/sqlrest
和
URI 模板 - /CUSTOMER/3
( API 端点 - www.thomas-bayer.com/sqlrest/CUSTOMER/3 )
在我尝试使用 ( http://localhost:8280:/sqlrest/CUSTOMER/3 )
调用 api 请求之后我得到的响应是完整的 HTML,带有 404 错误代码,而不是 XML 数据。
您提供的上下文不需要是来自实际端点的任何内容 URL。
例如,您可以将上下文定义为myapi
。然后你有2个选择。
选项 1:
配置端点为http://www.thomas-bayer.com/
然后您可以将您的 API 称为 http://localhost:8280/myapi/sqlrest/CUSTOMER/3
选项 2:
配置端点为http://www.thomas-bayer.com/sqlrest/
然后您可以将您的 API 称为 http://localhost:8280/myapi/CUSTOMER/3
您可以在 WSO2 ESB 中使用此 API:
<?xml version="1.0" encoding="UTF-8"?>
<api xmlns="http://ws.apache.org/ns/synapse"
name="sqlrestAPI"
context="/sqlrest">
<resource methods="GET" protocol="http" uri-template="/CUSTOMER/{id}">
<inSequence>
<log level="full"/>
<send>
<endpoint>
<http method="GET"
uri-template="http://www.thomas-bayer.com/sqlrest/CUSTOMER/{uri.var.id}"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
</outSequence>
<faultSequence/>
</resource>
</api>
然后调用它(在我的例子中是 OFFSET = 3):
curl -v http://localhost:8283/sqlrest/CUSTOMER/3
回复:
* About to connect() to localhost port 8283 (#0)
* Trying 127.0.0.1...
* connected
* Connected to localhost (127.0.0.1) port 8283 (#0)
> GET /sqlrest/CUSTOMER/3 HTTP/1.1
> User-Agent: curl/7.25.0 (i386-pc-win32) libcurl/7.25.0 OpenSSL/0.9.8u zlib/1.2.6 libssh2/1.4.0
> Host: localhost:8283
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/xml
< Date: Thu, 26 Jan 2017 16:40:08 GMT
< Transfer-Encoding: chunked
<
<?xml version="1.0"?><CUSTOMER xmlns:xlink="http://www.w3.org/1999/xlink">
<ID>3</ID>
<FIRSTNAME>Michael</FIRSTNAME>
<LASTNAME>Clancy</LASTNAME>
<STREET>542 Upland Pl.</STREET>
<CITY>San Francisco</CITY>
</CUSTOMER>* Connection #0 to host localhost left intact
* Closing connection #0