全部产品
云市场

开始使用 SOFAREST 服务

更新时间:2019-11-12 16:13:04

SOFARPC 原生支持 REST 协议,同时支持 DSR(Direct Server Return)和负载均衡。

前置条件

在项目中引入下面的依赖。版本已由 SOFABoot 管控。

  1. <dependency>
  2. <groupId>com.alipay.sofa</groupId>
  3. <artifactId>rpc-enterprise-sofa-boot-starter</artifactId>
  4. </dependency>

发布服务

服务接口定义

  1. @Path("/webapi")
  2. @Consumes("application/json;charset=UTF-8")
  3. @Produces("application/json;charset=UTF-8")
  4. public interface RestService {
  5. @GET
  6. @Path("/restService/{id}")
  7. String sayRest(@PathParam("id") String string);
  8. }

服务实现

  1. public class RestServiceImpl implements RestService {
  2. @Override
  3. public String sayRest(String string) {
  4. return "rest";
  5. }
  6. }

服务发布配置

rpc_server.xml 中添加服务发布的配置:

  1. <bean id="restServiceImpl" class="com.alipay.sofa.rpc.samples.rest.RestServiceImpl"/>
  2. <sofa:service ref="restServiceImpl" interface="com.alipay.sofa.rpc.samples.rest.RestService">
  3. <sofa:binding.rest/>
  4. </sofa:service>

服务发布的默认端口是 8341。可通过配置 com.alipay.sofa.rpc.rest.port 以修改 SOFAREST 默认端口。详见 SOFARPC 进阶指南 > 配置说明SOFABoot 系统配置参数

服务引用

rpc_client.xml 中添加对服务引用的配置:

  1. <sofa:reference id="restServiceReference" interface="com.alipay.sofa.rpc.samples.rest.RestService">
  2. <sofa:binding.rest/>
  3. </sofa:reference>

服务调用

SOFARPC 支持对 RESTful 服务的直接调用。调用通过注册中心进行负载均衡的地址获取,示例代码如下:

  1. RestService restService = (RestService) applicationContext.getBean("restServiceReference");
  2. String result = restService.sayRest("rest");

您也可以直接通过 HttpClient 或者浏览器发起服务调用请求:

  1. # curl http://127.0.0.1:8341/webapi/restService/1
  2. rest%