Go Web——RESTful风格编程


一 简介

REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,Roy Fielding是 HTTP 规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计风格。

Restful就是一个资源定位、资源操作的风格,不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制

资源:互联网所有的事物都可以被抽象为资源

资源操作:分为POSTDELETEPUTGET四种方法,使用不同方法对资源进行操作(增删改查)

二 传统风格与RESTful风格对比

2.1 传统方式操作资源

通过不同的参数来实现不同的效果

方法单一

http://127.0.0.1/item/queryItem.action?id=1(查询,GET)
http://127.0.0.1/item/saveItem.action(新增,POST)
http://127.0.0.1/item/updateItem.action(更新,POST)
http://127.0.0.1/item/deleteItem.action?id=1(删除,GET或POST)

2.2 Restful方式操作资源

可以通过不同的请求方式来实现不同的效果

请求地址一样,但功能可以不同

http://127.0.0.1/item/1(查询,GET)
http://127.0.0.1/item(新增,POST)
http://127.0.0.1/item(更新,PUT)
http://127.0.0.1/item/1(删除,DELETE)

在这里插入图片描述

三 RESTful 的特性

  • 资源(Resources)

    网络上的一个实体,或者说是网络上的一个具体信息。 它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。可以用一个 URI(统一 资源定位符)指向它,每种资源对应一个特定的 URI 。要 获取这个资源,访问它的 URI 就可以,因此 URI 即为每一个资源的独一无二的识别符。

  • 表现层(Representation)

    把资源具体呈现出来的形式,叫做它的表现层 (Representation)。 比如,文本可以用 txt 格式表现,也可以用 HTML 格式、XML 格式、JSON 格式表现,甚至可以采用二进制格式。

  • 状态转化(State Transfer)

    每发出一个请求,就代表了客户端和服务器的一次交互过程。 HTTP 协议,是一个无状态协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器, 必须通过某种手段,让服务器端发生“状态转化”(State Transfer)。而这种转化是建立在表现层之上的,所以 就是 “表现层状态转化”。具体说,就是 HTTP 协议里面,四个表示操作方式的动词:GETPOSTPUTDELETE。它们分别对应四种基本操作:

    • GET 用来获取资源,从服务器查询,可以在服务器通过请求的参数区分查询的方式。
    • POST 用来新建资源,在服务器新建一个资源,调用insert操作。
    • PUT 用来更新资源,在服务器更新资源,调用update操作。
    • DELETE 用来 删除资源,从服务器删除资源,调用delete语句。

四 RESTful的使用

在Restful风格中,用户请求的url使用同一个url而用请求方式:get,post,delete,put…等方式对请求的处理方法进行区分,这样可以在前后台分离式的开发中使得前端开发人员不会对请求的资源地址产生混淆和大量的检查方法名的麻烦,形成一个统一的接口。

在这里插入图片描述

举例:

如果当前url是 http://localhost:8080/rng
那么用户只要请求这样同一个URL就可以实现不同的增删改查操作,例如

  • http://localhost:8080/rng?_method=get&id=1001 这样就可以通过get请求获取到数据库 user 表里面 id=1001 的用户信息

  • http://localhost:8080/rng?_method=post&id=1001&name=zhangsan 这样可以向数据库 user 表里面插入一条记录

  • http://localhost:8080/rngr?_method=put&id=1001&name=lisi 这样可以将 user表里面 id=1001 的用户名改为lisi

  • http://localhost:8080/rngr?_method=delete&id=1001 这样用于将数据库 user 表里面的id=1001 的信息删除

    这样定义的规范我们就可以称之为restful风格的API接口,我们可以通过同一个url来实现各种操作

注意事项

  1. URI(统一资源标识符)中不能包含动词,只能包含名词因为“资源”是一种”实体“,所以URI中只能包含名词。

    URI = Universal Resource Identifier 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。
    URL = Universal Resource Locator 统一资源定位符,一种定位资源的主要访问机制的字符串。
    URN = Universal Resource Name 统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源。
    
  2. 在URI中不能包含版本号(不同的版本,可以理解成同一种资源的不同表现形式),所以应该采用同一个URI。版本号可以在HTTP请求头信息的Accept字段中进行区分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值