本文以实际场景为例介绍接入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
  • 非公开访问(需要订购)的服务。
    在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

服务配置接入path

调用服务

  • 调用后端服务。
    #请求后端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

服务配置

  1. 在接入协议时设置端点,并设置对应的HTTP参数。接入协议-设置HTTP参数
  2. 设置开放协议的path开放协议-设置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

服务配置
  1. 在接入协议时的接入端点内设置path属性。接入协议-设置path
  2. 设置开放协议的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协议。
服务配置FROM-服务配置

接入后端服务

@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协议。
服务配置JSON-服务配置

接入后端代码

@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
    }
}