RESTful 风格 介绍


 

 

华润五彩城, 清河中街

RESTful Web Service

使用SpringMVC 实现RESTful  {  REST RESTful Web Service  }

 

···  REST是什么 ?

REST表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

REST Web服务的一种架构风格

使用HTTPURL 等广泛流行的标准和协议

轻量级、跨平台‘跨语言的架构设计。

REST是一种设计风格。它不是一种标准,也不是一种软件,而是一种思想。

REST通常基于使用HTTP ,URL ,XML,json 以及 HTML这些现有的广泛流行的协议和标准。

 

··· RESTful是什么?

· RESTful对应的中文是 REST 式的。

· RESTful Web Service是一种常见的REST的应用,是遵守了REST风格的Web服务。

· REST式的Web服务是一种ROA (面向自资源的架构)

 

···  REST  架构的主要原则

·网络上的所有事物都可以被抽象为资源 (Resource

·每个资源都有一个唯一的资源标识符 (Resource identifier

·同一资源具有多种表现形式 (XML  JSON等)

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

·所有的操作都是无状态的  (Stateless

·符合REST原则的架构方式即可称为RESTful

 

··· URI URL

URI    - http://example.com/users/

URL    http://example.com/users/{user}{one for each user}

 

···   RESTful的无状态性:

·无状态性使得客户端和服务端不必保存对方的详细信息,服务器只需要处理当前Request,而不必了解前面Request的历史。从而可以更容易地释放资源。

让服务器充分利用Pool技术来提高稳定性。

 

···  资源操作 < 学习的核心 >

·http://example.com/users/

-  GET :       获得一个资源

     POST :      创建一个新的资源

     PUT :     修改一个资源的状态

   DELETE :   删除一个资源

·资源展现

   -- XML    --JSON   -..........

对比:

之前的操作:

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     删除用户数据

 

REST接口定义

http方法      资源操作       幂等      安全

GET           SELECT       是        是

POST          INSERT       否         否

PUT           UPDATE       是         是

DELETE       DELETE       是         否

幂等性:同一REST接口的多次访问,得到的资源状态是相同的。

安全性:对该REST 接口访问,不会使服务器端资源的状态发生改变。

 

REST接口设计:

·URL的组成;  - 网络协议(httphttps-服务器地址

             - 接口名称     -  ?参数列表

·URL定义限定  - 不要使用大写字母

                - 使用中线 - 代替下划线_

  - 参数列表应该被encode

 

响应设计:

·Content body 仅仅用来传输数据。

·数据要做到拿来就可用的原则,不需要”拆箱“的过程。

·用来描述数据或者请求的元数据放Header中,例如 X- Result-Fields

示例:

Response Headers:

Status :200

Response Body:{

“trade_id” :1234,

“trade_name” : “BaLa BaLa”

}

 

Http 响应:

 

Code  Http Operation               Body Contents     Description

200   GET ,PUT                   资源             操作成功   

201   POST                       资源,元数据    对象创建成功

202   POST,PUT,DELETE,PATCH    N/A             请求已经被接受

204   DELETE,PUT,PATCH          N/A      操作执行成功,但无返回类型                    

301   GET                        link            资源已被移除

303   GET                        link            重定向

304   GET                        N/A            资源没有被修改

400 GET,POST,,PUT,,DELETE,PATCH错误提示 参数列表错误缺少,格式不匹配

401   GET,POST,PUT,DELETE,,PATCH错误提示    未授权

403   GET,POST,PUT,DELETE,PATCH错误提示    访问受限,授权过期

404   GET,POST,PUT,DELETE,,PATCH错误提示   资源,服务未找到

405   GET,POST,PUT,DELETE,,PATCH错误提示   不允许的http方法

409   GET,POST,PUT,DELETE,,PATCH错误提示   资源冲突,或者资源被锁定

415   GET,POST,PUT,DELETE,,PATCH错误提示   不支持的数据(媒体)类型

429   GET,POST,PUT,DELETE,,PATCH错误提示   请求过多被限制

500   GET,POST,PUT,DELETE,,PATCH错误提示   系统内部错误

501   GET,POST,PUT,DELETE,,PATCH错误提示   接口未实现

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM