Restful-宏观介绍-例子

背景

由于项目上要与ITOO进行 互通数据,图书馆项目必须要与ITOO项目进行远程调用接口,由于图书馆项目使用的是Ejb框架,所以经过和项目经理的考核我们准备使用Restful进行通信实现远程通信


宏观介绍

首先通过宏观我们先认识一下什么是restful,说简单点它是一种风格,什么样的风格呢?实现了REST的风格。由于要实现远程通信肯定少不了就是与协议有关的东东,REST是基于http协议,根据图大概应该有所了解,在我们Ejb框架中Jboss可以帮助我们利用注解解决远程调用的问题。


他被称为:表示性状态转义,他是通过请求和响应实现的一中客户端-服务器应用架构样式,核心是资源,表示,转移,在rest框架中所有的数据与功能都被称为资源。我们所有的资源都是通过URI,我们的URI使用的注解是@path

这里写图片描述


jaxrs-client

我简单的跟大家讲一条线,并且restful所有的资源都打包到了war包中,首先从客户端开始

 //客户端的代码地址
    private static final String REST_TARGET_URL = "http://localhost:8080/jboss-jaxrs-client/rest/contacts";
    //名字
    private static final String CONTACT_NAME = "New Judy";
    //手机号
    private static final String CONTACT_PHONE = "+18631687403";
    //下面是运行的第一个例子
      @Test
    public void cruedTest() {
      Response response = 
//通过我们的REST_TARGET_URL找到我们的地址,然后调到地址类中的@delete注解    
  ClientBuilder.newClient().target(REST_TARGET_URL).request().delete()

//格式:assertEquals(message发生错误的时候报这个额消息,expected期望值,actual,被测试代码返回的实际值)
      Assert.assertEquals("我是第一个judy哦,我要删除哦。All contacts should be dropped"+"实际返回的值:"+response.getStatus(), Response.ok().build().getStatus(), response.getStatus()); 
    }


服务器端例子,需要注意到几个注解
这里写图片描述


//表示资源路径为contacts
/**我们必须有这个路径否则找不到资源,因为我们在客户端的url中的地址是:
http://localhost:8080/jboss-jaxrs-client/rest/contacts,
所以最后她会去找contacts
**/
@Path("/contacts")
  //post请求
    @POST
    //用于指定MIME媒体类型,资源可以使用客户端发送这种类型请求
    @Consumes(MediaType.APPLICATION_JSON)
    //指定MIME媒体类型,资源可以生成这种类型表示,并返回给可会断
    //MediaType用来指定媒体类型
    //指定输出格式为json格式的
    @Produces(MediaType.APPLICATION_JSON)

根据@delete我们直接调到这里

 // delete all contacts
    @DELETE
    public Response removeAllContacts() {
        //清楚map结合中所有的数据
        contactsRepository.clear();
        //重置设置为空白状态,构建器*被重置为空白状态,相当于调用ok方法。
        return Response.ok().build();
    }


///处了这种形式有的时候你会发现在你根据path去寻找restful的时候,可能需要参数
//服务器端写法,这个时候id就相当于是一个参数。
 @DELETE
    @Path("/{id}")
    public Response removeContact(final @PathParam("id") Long id) {
        contactsRepository.remove(id);
        return Response.ok().build();
    }



///用于指定压塑包中所有restful资源的基本路径,
//继承Application的原因是我们需要使用应用程序额外先关的元数据

@ApplicationPath("/rest")
public class JaxRsActivator extends Application {
    /* class body intentionally left blank */
}

总结

这个例子仅仅是个入门!期待与ITOO完美的进行的通信~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王雪芬-ghqr-264962

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值