RESTful 理解

  • RESTful是什么?

  1. REST是英文representational state transfer(表象性状态转变)或者表述性状态转移。(看不懂)
  2. REST是一种web服务中接口设计风格。(看不懂 +1)
  3. 在RESTful接口设计中,用URL定位资源,用HTTP动词(GET,POST,DELETE)描述操作。
GET:读取(Read);POST:新建(Create);PUT:更新(Update);DELETE:删除(Delete)
  1. 看Url就知道要什么;看http method就知道干什么;看http status code就知道结果如何。
  • 举个栗子

假如我们有个接口是关于删除图书管理系统的某本书,如果使用普通的接口设计风格,那么接口设计出来可能是:
/library/deleteBook POST
但是如果我们使用RESTful风格,设计出来的接口可能是:
/library/books DELETE
books是个名词,用来定位资源;DELETE是个动词,用来进行操作描述。

http://127.0.0.1/library/books/1 GET  根据图书id获取图书信息
http://127.0.0.1/library/books POST 新增图书
http://127.0.0.1/library/books PUT 修改图书信息
http://127.0.0.1/library/books DELETE 删除图书信息 
  • RESTful设计原则

  1. 网络上的所有事物都被抽象为资源
  2. 每个资源都有一个唯一的资源标识符 (比如上面的图书馆里面的书我们可以抽象为book)
  3. 同一个资源具有多种表现形式(xml,json等)
  4. 对资源的各种操作不会改变资源标识符
  5. 所有的操作都是无状态的
  6. 符合REST原则的架构方式即可称为RESTful
  • 误区

  1. url不应该存在动词,最好是复数,比如你要展示某篇新闻,你可以/posts/id ,但是不要/posts/show/id
  2. 如果真的要表示一个动作,比如A给B转账,你不要/accounts/A/transfer/B/to/2,而是因为把transfer写成名次transacion /transaction from=A&to=B&amount=2
  3. 不要在url中加入版本号,比如/post1/v1/transaction 而是因为把版本号作为header的参数写在header里面。
  4. 对于多级URL,我们要做的是确认主体,把某些url作为参数的一部分传进去;比如我们要查看某个作者的所有书,我们可能会这么写/authors/huangzp/books,但是比较正确的做法是先确认主体为书,然后把作者作为参数传进去,得/books?author=huangzp
  • 状态码

分类
1xx:相关信息
2xx:操作成功
3xx:重定向
4xx:客户端错误
5xx:服务器错误

2XX
200表示操作成功,但是也有更详细的分类:

  1. GET/PUT 200 表示获取/更新成功
  2. POST 201 表示表示新增成功,已经添加了新的资源
  3. DELETE 204 表示删除失败,已经删除了资源
  4. 202 表示服务器已经接收了请求,但是还未处理,过阵子再处理,用于异步操作

3XX

  1. 301 永久跳转(用于浏览器)
  2. 302/307 暂时跳转(用于浏览器)
  3. 303 see other (用于api)

4XX
4xx状态码表示客户端错误,主要有下面几种。

  1. 400 请求地址有问题,可能是参数匹配有误等
  2. 401 用户未提供身份验证凭据,或者没有通过身份验证。
  3. 403 用户通过了身份验证,但是不具有访问资源所需的权限。
  4. 405 用户已经通过身份验证,但是所用的 HTTP 方法不在他的权限之内。
  5. 404 所请求的资源不存在,或不可用。

5XX
5xx状态码表示服务端错误。一般来说,API 不会向用户透露服务器的详细信息,所以只要两个状态码就够了。

  1. 500 客户端请求有效,服务器处理时发生了意外。
  2. 503 服务器无法处理请求,一般用于网站维护状态。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容

  • 什么是RESTful RESTful是一种设计原则。只要我们的服务满足这种设计原则,那我们的服务便可以称之为RES...
    _heqin阅读 390评论 0 1
  • 一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式。”但是在要求详细讲述它所提出的各个约束,以及如...
    时待吾阅读 3,419评论 0 19
  • 2018-04-05 网页功能主要是create、read、update、delete。但是实现方式、网址设计可能...
    awsome365阅读 3,364评论 0 0
  • 前言:最近两年很火爆的网络框架Retrofit,使用它的时候,查看文档会告诉你,要求后台的服务器哥们必须符合RES...
    AWeiLoveAndroid阅读 94,879评论 10 93
  • 解释一 REST -- REpresentational State Transfer 直接翻译:表现层状态转移。...
    时间之友阅读 2,230评论 0 10