前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Restful接口开发与测试—Rest简介

Restful接口开发与测试—Rest简介

作者头像
清风穆云
发布2021-08-09 11:23:11
7750
发布2021-08-09 11:23:11
举报
文章被收录于专栏:QA一隅

Rest概述

简介

  • REST是英文Representational State Transfer(表现层状态转化),Rest是web服务的一种架构风格;
  • 使用HTTP,URI、XML、JSON、HTML等广泛流行的标准和协议;轻量级,跨平台、跨语言的架构设计;
  • 它是一种设计风格,不是一种标准,是一种思想。

Rest原则

  • 网络上的所有事物都可以被抽象为资源(resource)。
  • 每一个资源都有唯一的资源标识(resource identifier),对资源的操作不会改变这些标识
  • 所有的操作都是无状态的。

设计思想

REST简化开发,其架构遵循CRUD原则,该原则告诉我们对于资源(包括网络资源)只需要四种行为:创建,获取,更新和删除就可以完成相关的操作和处理。

我们可以通过统一资源标识符(Universal Resource Identifier,URI)来识别和定位资源,并且针对这些资源而执行的操作是通过 HTTP 规范定义的。其核心操作只有GET,POST,PUT,DELETE。也就是:URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。

因此设计web接口的时候,REST主要是用于定义接口名,接口名一般是用名次写,不用动词,那怎么表达“获取”或者“删除”或者“更新”这样的操作呢——用请求类型(GET,PUT,POST,DELETE)来区分。

案例

比如我们设计一个用户管理系统的接口,如果不使用Restful风格,接口会定义如下:

代码语言:javascript
复制

http://127.0.0.1/user/query/1  #根据用户id查询用户数据 GET请求
http://127.0.0.1/user/adduser  #新增用户 Post请求
http://127.0.0.1/user/update   #修改用户信息 PUT请求
http://127.0.0.1/user/delete   #删除用户信息 DELETE 请求

从上面的定义接口来看貌似没有什么问题,但是仔细揣测就会发现有一些瑕疵:比如查询方法定义接口使用了query动词,而GET请求本身的含义也就是从服务器获取资源,带有查询的含义,如果接口里面定义又加上这样的动词显得重复,同理其他几个接口也是一样的。

而使用Rest接口定义如下:

代码语言:javascript
复制
http://127.0.0.1/user/1  #GET 根据用户id查询用户数据
http://127.0.0.1/user    #POST 新增用户
http://127.0.0.1/user    #PUT 修改用户信息
http://127.0.0.1/user    #DELETE 删除用户信息

从上面定义的接口我们可以看出,接口名称主要指向user资源,具体的资源操作(增删改查)由HTTP的请求类型来定义。这样接口名称显得统一整洁,就不用定义不同的接口名称。遵循这样一种风格的Reset接口就叫做Restful。

HTTP方法幂等性与安全性

HTTP方法

资源操作

幂等

安全

GET

SELECT

安全

POST

INSERT

PUT

UPDATE

DELETE

DELETE

  • 幂等:对同一Rest接口多次请求,得到的资源状态是相同的。
  • 安全:对该Rest接口请求,不会使服务器资源状态发生改变。

Rest优势

由于REST强制所有的操作都必须是无状态的,这就没有上下文的约束,如果做分布式,集群都不需要考虑上下文和会话保持的问题。极大的提高系统的可伸缩性。

前后端分离。前端拿到数据只负责展示和渲染,不对数据做任何处理。后端处理数据并以JSON格式传输出去,定义这样一套统一的接口,在web,ios,android三端都可以用相同的接口。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 QA一隅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Rest概述
    • 简介
      • Rest原则
        • 设计思想
          • 案例
            • HTTP方法幂等性与安全性
              • Rest优势
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档