RESTful编程风格

RESTful的定义

RESTful是代表REST化,或者说设计遵从REST架构。REST即为Representational State Transfer的缩写,中文意思大致是表现层状态转移,这里我们解析一下表现层状态转移的含义,首先REST的前面应该加上资源二字,全称为资源表现层状态转移,这里的资源可以理解为网络上的各式各样的歌曲、文本、图片等一系列资源,然后可以通过URL(统一资源定位符)对他们相应的位置进行定位,表现层在我的理解中是这个资源表现出来的形式,例如uzi.jpg,这张图片就可以更改后缀名为uzi.png,这样的更改并不会影响他在网络上的位置。状态转化的理解在于当我们客户端与服务器端进行这些资源的操作时,完成该资源的表现层状态的转换,这里的表现层状态的转换例如UZI.jpg转换为UZI.png或者新添加ming.jpg用于创建ming这个资源。

这里关于表现层状态转换的方法大致有以下几个:

GET(SELECT):从服务器查询,可以在服务器通过请求的参数区分查询的方式。
POST(CREATE):在服务器新建一个资源,调用insert操作。
PUT(UPDATE):在服务器更新资源,调用update操作。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。(目前jdk7未实现,tomcat7也不行)。
DELETE(DELETE):从服务器删除资源,调用delete语句。

关于RESTful的使用

在Restful风格中,用户请求的url使用同一个url而用请求方式:get,post,delete,put…等方式对请求的处理方法进行区分,这样可以在前后台分离式的开发中使得前端开发人员不会对请求的资源地址产生混淆和大量的检查方法名的麻烦,形成一个统一的接口。
了解这个风格定义以后,我们举个例子:
如果当前url是 http://localhost:8080/rng
那么用户只要请求这样同一个URL就可以实现不同的增删改查操作,例如
http://localhost:8080/rng?_method=get&id=1001  这样就可以通过get请求获取到数据库 user 表里面 id=1001 的用户信息
http://localhost:8080/rng?_method=post&id=1001&name=zhangsan  这样可以向数据库 user 表里面插入一条记录
http://localhost:8080/rngr?_method=put&id=1001&name=lisi  这样可以将 user表里面 id=1001 的用户名改为lisi
http://localhost:8080/rngr?_method=delete&id=1001  这样用于将数据库 user 表里面的id=1001 的信息删除
这样定义的规范我们就可以称之为restful风格的API接口,我们可以通过同一个url来实现各种操作

常见错误(这些内容参考了网络上其他大佬的相关资料):

1.URI(统一资源标识符)中不能包含动词,只能包含名词因为“资源”是一种”实体“,所以URI中只能包含名词。

URI = Universal Resource Identifier 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。
URL = Universal Resource Locator 统一资源定位符,一种定位资源的主要访问机制的字符串。
URN = Universal Resource Name 统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源。

2.在URI中不能包含版本号
因为不同的版本,可以理解成同一种资源的不同表现形式,所以应该采用同一个URI。版本号可以在HTTP请求头信息的Accept字段中进行区分。

你可能感兴趣的:(java)