Dubbox 构建Restful服务

Facade

@Path("/sysUserService")
@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
@Produces({ContentType.APPLICATION_JSON_UTF_8, ContentType.TEXT_XML_UTF_8})
public interface SysUserFacade {

    @GET
    @Path("/testget")
    public void testget();

    @GET
    @Path("/getUser")
    public SysUser getUser();

    @GET
    @Path("/get/{id : \\d+}")
    public SysUser getUser(@PathParam(value = "id") Integer id);

    @GET
    @Path("/get/{id : \\d+}/{name}")
    public SysUser getUser(@PathParam(value = "id") Integer id, @PathParam(value = "name") String name);

    @POST
    @Path("/testpost")
    public void testpost();

    @POST
    @Path("/postUser")
    public SysUser postUser(SysUser user);

    @POST
    @Path("/post/{id}")
    public SysUser postUser(@PathParam(value = "id") String id);

}

实现类

@Service("sysUserService")
@com.alibaba.dubbo.config.annotation.Service(interfaceClass=bhz.sys.facade.SysUserFacade.class, protocol = {"rest", "dubbo"})
public class SysUserService implements SysUserFacade {

    public SysUser getUser() {
        //http://localhost:8888/bhz-sys-service/sysUserService/getUser
        SysUser user = new SysUser();
        user.setId("1001");
        user.setName("张三");
        return user;
    }

    public SysUser getUser(Integer id) {
        SysUser user = new SysUser();
        user.setId("1001");
        user.setName("张三");
        return user;
    }

    public SysUser getUser(Integer id, String name) {
        SysUser user = new SysUser();
        user.setId("1001");
        user.setName("张三");
        return user;
    }

    public SysUser postUser(SysUser user) {
        user1.setName("张三");
        return user1;
    }

    public SysUser postUser(String id) {
        SysUser user = new SysUser();
        user.setId("1001");
        user.setName("张三");
        return user;
    }
}

dubbo-provider.xml

<!-- 引入配置文件 -->
    <context:property-placeholder location="classpath:config.properties" />

    <dubbo:application name="${dubbox.application}" owner="programmer" organization="dubbox"/>

    <!-- zookeeper注册中心 -->
    <dubbo:registry address="${dubbox.registry.address}" timeout="100000"/>

    <dubbo:annotation package="bhz.sys.service" />

    <!-- kryo实现序列化 -->
    <dubbo:protocol name="dubbo" serialization="kryo" optimizer="bhz.sys.serial.SerializationOptimizerImpl" />

    <!-- rest -->
    <dubbo:protocol name="rest" server="${dubbox.rest.server}" port="${dubbox.rest.port}" contextpath="${dubbox.rest.contextpath}" threads="${dubbox.rest.threads}" accepts="${dubbox.rest.accepts}" />


    <bean id="sysUserService" class="bhz.sys.service.SysUserService" />

    <dubbo:service interface="bhz.sys.facade.SysUserFacade" ref="sysUserService" protocol="rest,dubbo" />

小结

  • 提供restful接口,不仅可以为web端提供数据,也可以为手机端提供数据。

猜你喜欢

转载自blog.csdn.net/u013067402/article/details/76598908