REST 以及 RESTful的理解

来源:互联网 发布:网络接口芯片 编辑:程序博客网 时间:2024/05/18 09:25

文章并不完整,用来总结自己所学知识,纯属个人学习和一些看法,如有不同的看法请大家多多指点。

初步认识REST

REST名称REST – REpresentational State Transfer首先,之所以晦涩是因为前面主语被去掉了,全称是 Resource Representational State Transfer:通俗来讲就是:资源在网络中以某种表现形式进行状态转移。分解开来:Resource:资源,即数据(前面说过网络的核心)。比如 newsfeed,friends等;Representational:某种表现形式,比如用JSON,XML,JPEG等;State Transfer:状态变化。通过HTTP动词实现(POST,GET,DELETE,PUT,…..)。
REST描述的是在网络中client和server的一种交互形式;REST本身不实用,实用的是如何设计 RESTful API(REST风格的网络接口);

REST是面向资源的,而资源是通过 URI 进行暴露的。
符合REST设计风格的API称为 RESTful API 。

REST的出处

此构想出自于Roy Fielding的毕业论文,这哥们参与设计HTTP协议,也是Apache Web Server项目(可惜现在已经是 nginx 的天下)的co-founder。


RESTful API

首先为什么要用RESTful结构呢?

大家都知道”古代”网页是前端后端融在一起的,比如之前的PHP,JSP等。在之前的桌面时代问题不大,但是近年来移动互联网的发展,各种类型的Client层出不穷,RESTful可以通过一套统一的接口为 Web,iOS和Android提供服务。另外对于广大平台来说,比如Facebook platform,微博开放平台,微信公共平台等,它们不需要有显式的前端,只需要一套提供服务的接口,于是RESTful更是它们最好的选择。在RESTful架构下:
RESTful模式

不同的Client端使用一套RESTful API 即可。

那么什么样的API才符合REST思想呢

  1. Server中提供的RESTful API中,URL中只使用名词来指定资源,原则上不使用动词。比如:
    http://api.qc.com/v1/news: 获取新的信息;
    http://api.qc.com/v1/friends: 获取某人的好友列表;

  2. 用HTTP协议里的动词来实现资源的添加,修改,删除等操作。即通过HTTP动词来实现资源的状态扭转:GET 用来获取资源,POST 用来新建资源(也可以用于更新资源),PUT 用来更新资源,DELETE 用来删除资源。
    比如:
    DELETE http://api.qc.com/v1/friends: 删除某人的好友 (在http parameter指定好友id)
    POST http://api.qc.com/v1/friends: 添加好友
    GET http://api.qc.com/v1/friends: 获取好友列表
    PUT http://api.qc.com/v1/friends/{userID}: 更新好友

  3. Server和Client之间传递某资源的一个表现形式,比如用JSON,XML传输文本,或者用JPG,WebP传输图片等。当然还可以压缩HTTP传输时的数据(on-wire data compression)。

  4. 使用正确的HTTP Status Code表示访问状态,去传递Server的状态信息。比如最常用的 200 表示成功,500 表示Server内部错误等。

—————-

参考文章 :怎样用通俗的语言解释REST,以及RESTful
作者:覃超
链接:https://www.zhihu.com/question/28557115/answer/48094438
来源:知乎