本文以实际场景为例介绍接入RESTful协议开放RESTful协议,以帮助您深入理解开放服务。
背景信息
本文仅介绍在实际场景中接入RESTful协议开放RESTful协议的服务时一些重要的配置步骤和参数,如需了解完整的流程和参数解释,请参见发布后端已有服务。
本文列举了接入RESTful协议开放RESTful协议的几种场景:
调用CSB开放服务时,支持多种请求方式,请根据实际场景选择:
- 公开访问(无需订购)的服务。
- curl
#使用Path传值 curl -H'Content-Type:x-www-form-urlencoded' --data "${Body参数}" "http://CSB服务地址:8086/${服务版本}/${服务名称}/开放Path?Query参数" #使用query传值 curl --data "${Body参数}" "http://CSB服务地址:8086/开放Path?_api_name=${服务名称}&_api_version=${服务版本}&Query参数" #使用Header传值 curl -H"_api_name:${服务名称}" -H"_api_version:${服务版本}" --data "${Body参数}" "http://CSB服务地址:8086/开放Path?Query参数"
- CSB SDK
#非JSON请求。 java -jar http-client.jar -api ${服务名称} -version ${服务版本} -D'param1=value1' -D'param2=value2' -url http://CSB服务地址:8086/开放Path #JSON请求。 java -jar http-client.jar -api ${服务名称} -version ${服务版本} -cbJSON "${JSONBody}" -url http://CSB服务地址:8086/开放Path
- curl
- 非公开访问(需要订购)的服务。
在CSB SDK的基础上增加
-ak '${访问凭证ak}' -sk '${访问凭证sk}'
。#非JSON请求。 java -jar http-client.jar -api ${服务名称} -version ${服务版本} -ak ${访问凭证ak} -sk ${访问凭证sk} -D'param1=value1' -D'param2=value2' -url http://CSB服务地址:8086/开放Path #JSON请求。 java -jar http-client.jar -api ${服务名称} -version ${服务版本} -ak ${访问凭证ak} -sk ${访问凭证sk} -cbJSON "${JSONBody}" -url http://CSB服务地址:8086/开放Path
接入path开放query
服务配置
调用服务
- 调用后端服务。
#请求后端Endpoint,其中的service.ken.com为供测试用的后端restful应用, benz对应PathVariable curl http://service.ken.com/item/benz.rest
- 调用CSB开放的服务。
您可以选择以下任一请求代码进行服务调用:
#通过Path参数curl CSB服务。 curl http://csb.target.server:8086/1.0.0/item.http.get-query?name=benz
#通过Header参数curl CSB服务。 curl -H "_api_name:item.http.get-query" -H "_api_version:1.0.0" http://csb.target.server:8086/CSB?name=benz
#使用CSB SDK请求CSB服务。 java -jar http-client.jar -api item.http.get-query -version 1.0.0 -url http://csb.target.server:8086/CSB?name=benz
接入query/body开放path
服务配置
- 在接入协议时设置端点,并设置对应的HTTP参数。
- 设置开放协议的path。
接入后端代码
@RequestMapping(value = "/item-get", method = {RequestMethod.GET})
public ResultDTO<Item> get(@RequestParam("itemName") String itemName, @RequestParam("sleep") Integer sleep);
调用服务
- 调用后端服务。
#请求后端Endpoint,其中的service.ken.com为供测试用的后端restful应用。 curl "http://service.ken.com/item-get.rest?itemName=benz&sleep=10"
- 调用CSB开放服务。
您可以选择以下任一请求代码进行服务调用:
#通过Path参数curl CSB服务。 curl http://csb.target.server:8086/1.0.0/item.http.item-get-path/benz/10
#通过Header参数curl CSB服务。 curl -H "_api_name:item.http.item-get-path" -H "_api_version:1.0.0" http://csb.target.server:8086/benz/10
#使用CSB SDK请求CSB服务。 java -jar http-client.jar -api item.http.item-get-path -version 1.0.0 -url http://csb.target.server:8086/benz/10
接入开放均为Path
服务配置
- 在接入协议时的接入端点内设置path属性。
- 设置开放协议的path属性。
接入后端代码
@GetMapping("/item/{itemName}")
public ResultDTO<Item> getByPath(@PathVariable("itemName") String itemName);
调用服务
- 调用后端服务。
#请求后端Endpoint,其中的service.ken.com为供测试用的后端restful应用。 curl http://service.ken.com/itemcenter/item/benz.rest
- 调用CSB开放服务。
您可以选择以下任一请求代码进行服务调用:
#通过Header参数curl CSB服务。 curl -H "_api_name:item.get" -H "_api_version:1.0.0" http://csb.target.server:8086/CSB/benz
#使用CSB SDK请求CSB服务。 java -jar http-client.jar -api item.get -version 1.0.0 -url http://csb.target.server:8086/CSB/benz
FORM
说明 FORM场景,接入RESTful协议支持开放为RESTful和WebService协议。
服务配置
接入后端服务
@PostMapping("/item/form/add")
public ResultDTO<Item> add(@JsonParam(value = "item") Item item);
调用服务
- 调用后端服务。
#请求后端Endpoint,其中的service.ken.com为供测试用的后端restful应用。 curl -X POST -d 'item={"itemName":"benz","quantity":10}' \ http://service.ken.com:8080/itemcenter/item/form/add.rest
- 调用CSB开放服务。
您可以选择以下任一请求代码进行服务调用:
#通过Header参数curl CSB服务。 curl -H "_api_name:item.form.add" -H "_api_version:1.0.0" \ -X POST -d 'item={"itemName":"benz","quantity":10}' http://csb.target.server:8086/CSB
#使用CSB SDK请求CSB服务。 java -jar httpclient.jar -api item.form.add -version 1.0.0 -method post \ -D 'item={"itemName":"benz","quantity":10}' -url http://csb.target.server:8086/CSB
请求结果
{
"code": "0",
"msg": "SUCCESS",
"innerMsg": null,
"result": {
"trace": {
"traceId": "0ba783c115667270553611002d****",
"rpcId": "0",
"requestId": "0ba783c115667270549241001d****"
},
"itemName": "benz",
"quantity": 22627
}
}
JSON
说明 JSON场景,接入RESTful协议只支持开放为RESTful协议。
服务配置
接入后端代码
@PostMapping("/item/add")
public ResultDTO<Item> add(@RequestBody Item item);
调用服务
- 调用后端服务。
#请求后端Endpoint,其中的service.ken.com为供测试用的后端restful应用。 curl -H "Content-Type:application/json" -X POST -d '{"itemName":"benz","quantity":10}' \ http://service.ken.com:8080/itemcenter/item/add.rest
- 调用CSB开放服务。
您可以选择以下任一请求代码进行服务调用:
#通过Header参数curl CSB服务。 curl -H "Content-Type:application/json" -H "_api_name:item.add" -H "_api_version:1.0.0" \ -X POST -d '{"itemName":"benz","quantity":10}' http://csb.target.server:8086/CSB
#使用CSB SDK请求CSB服务。 java -jar httpclient.jar -api item.add -version 1.0.0 \ -cbJSON '{"itemName":"benz","quantity":10}' -method post -url http://csb.target.server:8086/CSB
请求结果
{
"code": "0",
"msg": "SUCCESS",
"innerMsg": null,
"result": {
"trace": {
"traceId": "0ba783c115667275786071002d****",
"rpcId": "0",
"requestId": "0ba783c115667275782281001d****"
},
"itemName": "benz",
"quantity": 22677
}
}