您当前的位置: 首页 >  restful

Charge8

暂无认证

  • 3浏览

    0关注

    447博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Rest、Restful和Jersey

Charge8 发布时间:2018-07-06 21:09:32 ,浏览量:3

 

1、什么是REST?

REST不是"rest"这个单词

Representational State Transfer 直接翻译:表现层状态转移,

找到的一种最好理解的说法是:URL定位资源,用HTTP动词GET,POST,DELETE,DETC)描述操作。

Resource:资源,即数据。Representational:某种表现形式,比如用JSON,XML,JPEG等;State Transfer:状态变化。通过HTTP动词实现。

1,资源:资源就是网络上的一个实体,一段文本,一张图片等。资源总是要通过一种载体来反应它的内容。文本可以用TXT,也可以用HTML或者XML、图片可以用JPG格式或者PNG格式,JSON是现在最常用的资源表现形式。

2,统一接口。RESTful风格的数据元操作CRUD(create,delete,update,read)分别对应HTTP方法:GET用来获取资源,DELETE用来删除资源,这样就统一了数据操作的接口,PUT用来更新资源,POST用来新建资源(也可以用于更新资源)。

3,URI。可以用一个URI(统一资源定位符)指向资源,即每个URI都对应一个特定的资源。要获取这个资源访问它的URI就可以,因此URI就成了每一个资源的地址或识别符。一般的,每个资源至少有一个URI与之对应,最典型的URI就是URL。

4,无状态。所谓无状态即所有的资源都可以URI定位,而且这个定位与其他资源无关,也不会因为其他资源的变化而变化。如果输入一个URL就可以得到指定员工的工资,则这种情况就是无状态的,由一个URL与之对应可以通过HTTP动词方法得到资源,这就是典型的RESTful风格。

REST原则:

   网络上的所有事物都被抽象为资源

    每个资源都有一个唯一的资源标识符

    同一个资源具有多种表现形式(xml,json等)

     对资源的各种操作不会改变资源标识符

   所有的操作都是无状态的

总结:REST是一种架构风格,REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性。

 

2、什么是Restful?

restful: 遵守了rest原则的web服务

理解:rest与restful相比,多了一个ful,就英语层面来说是一个形容词,restful翻译为中文为: “rest式的”

是rest式的什么呢?答案是:rest式的应用,rest风格的web服务也是rest式的应用,rest式的web服务是一种ROA(TheResource-Oriented Architecture)(面向资源的架构),ROA听起来很高大上有没有。。

两者的联系与区别

restful是由rest派生出来的。

restful用法:

在Restful之前的操作: http://127.0.0.1/user/query/1 GET  根据用户id查询用户数据 http://127.0.0.1/user/save POST 新增用户 http://127.0.0.1/user/update POST 修改用户信息 http://127.0.0.1/user/delete GET/POST 删除用户信息 RESTful用法: http://127.0.0.1/user/1 GET  根据用户id查询用户数据 http://127.0.0.1/user  POST 新增用户 http://127.0.0.1/user  PUT 修改用户信息 http://127.0.0.1/user  DELETE 删除用户信息

之前的操作是没有问题的,大神认为是有问题的,有什么问题呢?你每次请求的接口或者地址,都在做描述,例如查询的时候用了query,新增的时候用了save,其实完全没有这个必要,我使用了get请求,就是查询.使用post请求,就是新增的请求,我的意图很明显,完全没有必要做描述,这就是为什么有了restful.   

符合REST架构设计的API是RESTful API.

资源类上的常用注解有: @Path,标注资源类或者方法的相对路径 @GET,@PUT,@POST,@DELETE,标注方法是HTTP请求的类型。 @Produces,标注返回的MIME媒体类型 @Consumes,标注可接受请求的MIME媒体类型 @PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam

分别标注方法的参数来自于HTTP请求的不同位置,例如 @PathParam来自于URL的路径, @QueryParam来自于URL的查询参数, @HeaderParam来自于HTTP请求的头信息, @CookieParam来自于HTTP请求的Cookie。

3、什么是Jersey?

Jersey架包下载: 点击打开链接

Jersey 是一个Java规范(JAX-RS)下的基于Rest风格(轻量级RESTful风格)的Web Service开发框架。

 

4. Eclipse+ Jersey 实现Restful 服务:

本人的环境如下:

  • Eclipse
  • Jersey-1.19
  • Tomcat v8.0 Server

方法一:POJO支持

第一步:创建动态Web项目EShopRESTfulWS,依据如下图所示过程操作,最后点击“Finish”。

 

第二步:右击项目,选择Import菜单,加载jersey中必要的包,最后点击“Finish”。本项目中使用jersey-1.19版本,下载官方地址:https://jersey.java.net/download.html。

 

第三步:右击WebContent\Web-INF\lib目录下刚导入的Jersey包,选择Import菜单项将包加入搜索路径中。

 

第四步:创建POJO类——User。

 

 
    1. package com.shewo.eshop.model;

    2.  
    3. import javax.xml.bind.annotation.XmlRootElement;

    4.  
    5. @XmlRootElement

    6. public class User {

    7.  
    8. private String firstName = "";

    9. public String getFirstName(){

    10. return this.firstName;

    11. }

    12.  
    13. public void setFirstName(String firstName){

    14. this.firstName = firstName;

    15. }

    16.  
    17. private String lastName = "";

    18. public String getLastName(){

    19. return this.lastName;

    20. }

    21.  
    22. public void setLastName(String lastName){

    23. this.lastName = lastName;

    24. }

    25.  
    26. private int age = 0;

    27. public int getAge(){

    28. return this.age;

    29. }

    30.  
    31. public void setAge(int age){

    32. this.age = age;

    33. }

    34. }

  1.  

 

第五步:创建服务实现类——UserService。

 
  1. package com.shewo.eshop.restws;

  2.  
  3. import javax.ws.rs.Path;

  4. import javax.ws.rs.GET;

  5. import javax.ws.rs.core.MediaType;

  6. import javax.ws.rs.Produces;

  7.  
  8. import com.shewo.eshop.model.*;

  9.  
  10. @Path("UserService")

  11. public class UserService {

  12.  
  13. @GET

  14. @Path("/getUser")

  15. @Produces(MediaType.APPLICATION_JSON)

  16. public User getUser() {

  17. User user = new User();

  18. user.setAge(10);

  19. user.setFirstName("Meili");

  20. user.setLastName("Wang");

  21.  
  22. return user;

  23. }

  24. }

 

第六步:配置 web.xml文件,添加基于Servlet的部署 

 
  1. EShopRESTfulWS

  2. User REST Service

  3. com.sun.jersey.spi.container.servlet.ServletContainer

  4. com.sun.jersey.config.property.packages

  5. com.shewo.eshop.restws

  6.  
  7. 1

  8.  
  9. User REST Service

  10. /rest/*

完成上述步骤后,可以右击项目,选择:RunAs-Run On Server,选择你所安装的HTTPServer,这里我用的是Tomcat v8.0 Server。如下图:

 

点击“Finish”,运行Tomcat。这里需要注意:在此之前,本机不能有其它Tomcat实例在运行,否则会由于大家默认端口都为8080,从而造成冲突。  

Server启动成功后,可以用如下URL测试:http://localhost:8080/EShopRESTfulWS/rest/UserService/getUser

网页中出现如下结果表示系统运行正常:{"age":"10","firstName":"Meili","lastName":"Wang"}

URL说明:

参考文章:

 Eclipse+Jersey实现RESTful服务

 REST接口 

 

 Restful api 注释: REST 在 Java 中的使用

RESTful API中跨域问题

 

关注
打赏
1664721914
查看更多评论
立即登录/注册

微信扫码登录

0.0413s