欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【tips】RESTful架构

程序员文章站 2024-01-26 23:32:16
认识RESTful在前后端分离的应用模式里,后端API接口如何定义?例如对于后端数据库中保存了商品的信息,前端可能需要对商品数据进行增删改查,那相应的每个操作后端都需要提供一个API接口: POST /add-goods 增加商品 POST /delete-goods 删除商品 POST /upda ......

认识restful
在前后端分离的应用模式里,后端api接口如何定义?
例如对于后端数据库中保存了商品的信息,前端可能需要对商品数据进行增删改查,那相应的每个操作后端都需要提供一个api接口:
    post /add-goods 增加商品
    post /delete-goods 删除商品
    post /update-goods 修改商品
    get /get-goods 查询商品信息

对于接口的请求方式与路径,每个后端开发人员可能都有自己的定义方式,风格迥异。

是否存在一种统一的定义方式,被广大开发人员接受认可的方式呢?
这就是被普遍采用的api的restful设计风格。


1. 起源

rest这个词,是roy thomas fielding在他2000年的博士论文中提出的。
rest作者fielding是一个非常重要的人,他是http协议(1.0版和1.1版)的主要设计者、apache服务器软件的作者之一、apache基金会的第一任主席。所以,他的这篇论文一经发表,就引起了关注,并且立即对互联网开发产生了深远的影响。


2. 名称

fielding将他对互联网软件的架构原则,定名为rest,即representational state transfer的缩写。*称其为“具象状态传输”,国内大部分人理解为“表现层状态转化”。

restful是一种开发理念。*说:rest是设计风格而不是标准。 rest描述的是在网络中client和server的一种交互形式;rest本身不实用,实用的是如何设计 restful api(rest风格的网络接口),一种万维网软件架构风格。

我们先来具体看下restful风格的url,比如我要查询商品信息,那么
    非rest的url:http://.../querygoods?id=1001&type=t01
    rest的url: http://.../t01/goods/1001
可以看出rest特点:url简洁,将参数通过url传到服务器,而传统的url比较啰嗦,而且现实中浏览器地址栏会拼接一大串字符,想必你们都见过吧。但是采用rest的风格就会好很多,现在很多的网站已经采用这种风格了,这也是潮流方向,典型的就是url的短化转换。

那么,到底什么是restful架构: 如果一个架构符合rest原则,就称它为restful架构。
要理解restful架构,理解representational state transfer这三个单词的意思。
    1、具象的,就是指表现层,要表现的对象也就是“资源”,什么是资源呢?网站就是资源共享的东西,客户端(浏览器)访问web服务器,所获取的就叫资源。比如html,txt,json,图片,视频等等。
    2、表现,比如,文本可以用txt格式表现,也可以用html格式、xml格式、json格式表现,甚至可以采用二进制格式;图片可以用jpg格式表现,也可以用png格式表现。
    浏览器通过url确定一个资源,但是如何确定它的具体表现形式呢?应该在http请求的头信息中用accept和content-type字段指定,这两个字段才是对"表现层"的描述。
   3、 状态转换, 就是客户端和服务器互动的一个过程,在这个过程中, 势必涉及到数据和状态的变化, 这种变化叫做状态转换。
    互联网通信协议http协议,客户端访问必然使用http协议,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(state transfer)。


    http协议实际上含有4个表示操作方式的动词,分别是 get,post,put,delete,他们分别对应四种操作。

       get用于获取资源,

       post用于新建资源,

       put用于更新资源,

       delete用于删除资源。

    get和post是表单提交的两种基本方式,比较常见,而put和delete不太常用。而且http协议是一种无状态协议,这样就必须把所有的状态都保存在服务器端。

    因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(state transfer)

3. 总结

综合上面的解释,restful架构就是:
    1、每一个url代表一种资源;
    2、客户端和服务器之间,传递这种资源的某种表现层;
    3、客户端通过四个http动词,对服务器端资源进行操作,实现"表现层状态转化"。