RESTful Endpoint

Who invented REST?
REST was defined by Roy Fielding, a computer scientist. He presented the REST principles in his PhD dissertation in 2000.

REST 可以看成一种服务器接口设计的模式pattern。它的全称是 REpresentational State Transfer。它的意思就是说,服务器根据前端的请求,返回给可展示的资源状态。例如你请求了Weibo一个用户的信息,那么服务器就应该返回给你一个user,包含了姓名,账号,关注人数等信息。

相关名词

Resource:资源可以是前端想要获取的任何东西,一张图片,一个文件,一个用户的信息等等。
Collection:一系列的用户。
URL:Uniform Resource Locator,指向一个资源的路径。

为什么需要REST

如果在完全没有系统学习过接口设计的情况下,让你去设计一系列接口,你会怎么设计?我想大部分人都会做出如下的设计:

/addNewUser
/updateUser
/deleteUser
...

你或许会觉得这样的设计很readable啊,一看就知道是什么意思了。是的,可读性或许确实是它的一个优点,但同时不容易去维护你的接口。原因是你需要想方设法去像一个这种名字,接口少的时候还好,多了呢?如何解决接口重名的问题。
解决的方法就是舍弃这种依靠命名来分辨接口的办法。REST提出了一个很好的解决办法,依靠资源定位符和request方法来分辨要请求的资源以及要进行的操作(CRUD)。

Constraints in REST

  1. 在 URL 中只能包含名词,不能包含动词,例如/addNewUser应该改成 /users。并且名词都是复数,不能是单数。这很好理解,资源在后台数据中都不是单个存在的,就像用户不可能只有一个一样。
  2. 一个URL动作的定义取决于request的方法(GET,POST...)。具体请求方法对应的含义如下:
    a. GET 用来获取数据,并且不产生副作用(side effects)。例如 GET: /companies 应该获取所有的公司信息。
    b. POST 用来创建一个新的Resource。post不是一个幂等操作,也就是说多刺post操作会产生不一样的结果。就如同创建多个用户时,每一个用户都是不一样(起码id是不一样的)。
    所以使用 POST: /companies 会创建一个新的公司。
    c. PUT 用来更新一个资源,或者创建一个资源,如果不存在的话。
    所以 PUT: /companies/Amazon 会更新Amazon这家公司,或者先创建Amazon然后更新它。
    put是一个幂等操作,意味着多次相同URL的PUT操作只会产生一样的效果。就像更新一个用户,使用相同的信息就算更新一万次,结果也是一样的。
    d. DELETE 会从数据库删除该资源。

HTTP Response Status Code

2XX (Success category)

这类Code代表操作成功。

  • 200 OK:标准的成功状态,一般适用于GET,PUT和POST。
  • 201 Created:当新资源创建成功的时候可以返回这个状态。例如POST。
  • 204 Not Content:代表操作成功,但没有需要返回的信息。例如DELETE,删除完成之后不需要返回额外信息了。

3xx (Redirection Category)

  • 304 Not Modified indicates that the client has the response already in its cache. And hence there is no need to transfer the same data again.

4xx (Client Error Category)

These status codes represent that the client has raised a faulty request.

  • 400 Bad Request indicates that the request by the client was not processed, as the server could not understand what the client is asking for.
  • 401 Unauthorized indicates that the client is not allowed to access resources, and should re-request with the required credentials.
  • 403 Forbidden indicates that the request is valid and the client is authenticated, but the client is not allowed access the page or resource for any reason. E.g sometimes the authorized client is not allowed to access the directory on the server.
  • 404 Not Found indicates that the requested resource is not available now.
    410 Gone indicates that the requested resource is no longer available which has been intentionally moved.

5xx (Server Error Category)

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

推荐阅读更多精彩内容