Rest风格设计

Rest风格设计

一.概述

 REST是一种表述网络架构的方式。
要理解什么是REST,我们需要理解下面几个概念(引用参考https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/08.3.md)
资源(Resources) 
REST是"表现层状态转化",其实它省略了主语。"表现层"其实指的是"资源"的"表现层"。那么什么是资源呢?就是我们平常上网访问的一张图片、一个文档、一个视频等。这些资源我们通过URI来定位,也就是一个URI表示一个资源。
表现层(Representation)
资源是做一个具体的实体信息,他可以有多种的展现方式。而把实体展现出来就是表现层,例如一个txt文本信息,他可以输出成html、json、xml等格式,一个图片他可以jpg、png等方式展现,这个就是表现层的意思。
URI确定一个资源,但是如何确定它的具体表现形式呢?应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。
状态转化(State Transfer)
访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,肯定涉及到数据和状态的变化。而HTTP协议是无状态的,那么这些状态肯定保存在服务器端,所以如果客户端想要通知服务器端改变数据和状态的变化,肯定要通过某种方式来通知它。
Rest架构的规则如下:

规则1:提供资源的接触

在典型的计算机系统中,客户端和服务端的交换命令有“做这个”、 “做那个”等。假如我们想要凭借非REST的方式建立一个要做的事情的列表,它可能是如下的样子:
非REST风格
/changeTodoList.php?item=35&action=changeTitle&title=new_title
注意这种URL是单纯的一条指令——改变资源,但是其中的“changeTodoList”并不是一种事务也不是一种资源。
在REST架构风格中,服务端仅仅提供资源,而资源是客户端和服务端用来交互的概念性的东西。
REST风格
/todolists/7/items/35/
以上这条URL并不是什么指令,它仅仅代表一种资源或是一种事务的网络地址。你可以用如上的这个地址操作类似“to-do”这样的列表,而这些操作标准的操作(通用格式的操作,下面会介绍)而不是特定的交互命令。
规则2:表达代表资源
一种资源就是一件事物——我们可以用不同的方式描述这些事物。例如,人们想要看html的网页,浏览器就将html转换成合理的布局渲染。但是有时候,网络的接口不仅被人使用而且被机器使用,它们需要一种不同的风格,例如JSON。
In a non-REST way, different formats have different addresses:
非REST方式,不同的形式有不同的地址。
REST风格

·        browser: /showTodoList.php?format=html

·        application: /showTodoList.php?format=json

这个问题就是系统用到不同的风格(浏览器和应用程序使用的是不同的url),而且它们之间是没有办法互相通信的,因为请求资源的url不相同。
在REST系统中,地址标识的是事物资源,不是形式,所以所有的系统用的同一个地址指向相同的事物资源。那么它们怎么得到不同的形式的资源能

REST风格

·        browser: “I want /todolists/7

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值