RESTful架构理解

REST就是一种架构思想,目的是建立长期的,不会随着技术发展被快速淘汰的Web服务架构。
REST代表具象状态传输,这是一个网络化的超媒体应用程序架构风格,它主要是用于构建轻量级的,可维护和可伸缩的Web服务。基于REST的服务称为REST式服务。REST是不依赖于任何协议,几乎每一个REST式服务使用HTTP作为其底层协议

每个系统使用资源。这些资源可以是图片、视频文件、Web页面、业务信息,或任何可以表示为一个基于计算机的系统。服务的目的是为其客户端提供一个窗口,这样他们可以访问这些资源。服务架构师和开发人员想要这个服务易于实现,可维护、可扩展和可伸缩的。
RESTful设计承诺等等。一般来说,基于rest的服务应该有以下属性和功能,我将详细说明:

特点

Representations(表示)

数据的表现形式JSON或者XML
depending on your requirement, you can decide to use JSON or XML

Messages(消息)

客户端与服务端的通信
Clients send a request to the server, and the server replies with a response. Apart from the actual data, these messages also contain some metadata about the message.
It is important to have some background about the HTTP 1.1 request and response formats for designing RESTful Web services

URIs(统一资源定位符)

服务器端的所有资源都有一个url,
REST requires each resource to have at least one URI.
A RESTful service uses a directory hierarchy like human readable URIs to address its resources.
This URL has following format:
Protocol://ServiceName/ResourceType/ResourceID
Here are some important recommendations for well-structured URIs:

  • Use plural nouns(使用名词复数) for naming your resources.

  • Avoid using spaces as they create confusion. Use an _ (underscore)(下划线) or – (hyphen)(连字符) instead.

  • A URI is case insensitive(不分大小写). I use camel case in my URIs for better clarity. You can use all lower-case URIs.

  • You can have your own conventions(自己的约定), but stay consistent throughout the service. Make sure your clients are aware of this convention.It becomes easier for your clients to construct the URIs programmatically if they are aware of the resource hierarchy and the URI convention you follow.

  • A cool URI never changes(URI不改变); so give some thought before deciding on the URIs for your service.
    If you need to change the location of a resource, do not discard the old URI.
    If a request comes for the old URI, use status code 300 and redirect the client to the new location.

  • Avoid verbs for your resource names(避免使用动词命名资源) until your resource is actually an operation or a process. Verbs are more suitable for the names of operations.
    For example, a RESTful service should not have the URIs http://MyService/FetcthPerson/1 or http://MyService/DeletePerson?id=1.

Uniform interface(统一的接口)

RESTful systems should have a uniform interface. HTTP 1.1 provides a set of methods,called verbs, for this purpose. Among these the more important verbs are:
GET,PUT,POST,DELETE

Stateless(无状态)

A RESTful service is stateless and does not maintain the application state for any client.
A request cannot be dependent on a past request and a service treats each request independently.

Links between resources(资源之间的联系)

nstead of dumping all these resources, you can list
the resources and provide links to them. Links help keep the representations small in size.

Caching(缓存)

Caching is the concept of storing the generated results and using the stored results
instead of generating them repeatedly if the same request arrives in the near future.
This can be done on the client, the server,or on any other component between them, such as a proxy server.

6个特征:

  • 客户端服务器各司所职
  • 服务器不存储状态
  • 客户端可以使用缓存
  • 接口统一(HTTP)
  • 系统分层
  • 客户端可按需下载代码

依靠以上6点可以很快理解为什么REST可以被认为是一种具有自主演化能力的架构。

4点原则:

1,使用明确的HTTP方法
  • retrieve data,use GET
  • create data,user POST
  • udpate or change data use PUT
  • delete data use DELETE
2,无状态

不要在服务器存储状态信息

3,暴露URIs的目录结构
4,传输XML,JSON或者这两个

总结:

综合上面的解释,我们总结一下什么是RESTful架构:
  (1)每一个URI代表一种资源;
  (2)客户端和服务器之间,传递这种资源的某种表现层;
  (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

参考资料:

http://cwbuecheler.com/web/tutorials/2014/restful-web-app-node-express-mongodb/
[http://www.drdobbs.com/web-development/restful-web-services-a-tutorial/240169069]
(http://www.drdobbs.com/web-development/restful-web-services-a-tutorial/240169069)
http://www.ruanyifeng.com/blog/2011/09/restful.html

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

推荐阅读更多精彩内容