RESTful规范

-web开发模式

--前后端不分离

即后端直接返回前端html页面,需要利用DTL(Django Template Language)书写

--前后端分离

只专注于写后端接口,浏览器不在后端服务器上请求页面,后端服务器只给前端返回json 或 xml格式的数据

-API接口

api接口就是前后端信息交互规则的url链接,也就是前后端信息交互的媒介

为了团队内不同人不同习惯的差异带来的影响,需要设计一套大家都觉得好的接口规范,以提高开发效率

eg:比如查百度地图上成都动物园的位置 所有参数就是api

https://map.baidu.com/poi/%E6%88%90%E9%83%BD%E5%8A%A8%E7%89%A9%E5%9B%AD/@11584285,3566779,13z?uid=61085211fb76b1a0c51b7571&info_merge=1&isBizPoi=false&ugc_type=3&ugc_ver=1&device_ratio=2&compat=1&pcevaname=pc4.1&querytype=detailConInfo&da_src=shareurl

-postman使用

当我们写完一堆接口后,想测试一下接口通不通,向这个接口发送请求是否会返回数据,若写一些测试代码比较麻烦。于是可以借助于接口测试工具postman

原理:就是模拟发送http请求

接口测试工具有很多,postman是比较好用的一个

同时postman还支持批量导出和接口测试

下载地址:Download Postman | Get Started for Free

-RESTful规范

REST(Representational State Transfer),中文译为"表征性状态转移",它从资源的角度类审视整个网络,将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态

RESTful是一种定义web api接口的设计规范,代表的是一种软件架构风格,尤其适用于前后端分离的项目开发中

事实上,任何一个框架都可以实现符合RESTful规范的api接口

--RESTful API设计

'''restful规范就是写API接口的规范,大部分的接口都会按照这个规范去写,相当于web API接口库的设计风格'''
  • 数据的安全保障
    url链接一般都采用https协议进行传输,提高数据交互的安全性
  • 接口特征表现
    # 一看就知道是个api接口
    实现方式:用api关键字表示接口,一看到api就知道是用于前后端交互的链接
        https://api.baidu.com 或 https://www.baidu.com/api
  • 多数据版本共存
    # 在url中标识数据版本
    https://api.baidu.com/v1
    https://api.baidu.com/v2
  • 数据即是资源
    # 均使用名词(可复数)
    '''接口一般用于完成前后端数据交互,交互数据称为资源'''
    比如我们要请求某图书馆网站的书的资源,就把该接口当做真正的书,查一本就用单数,查全部就用复数。而不是用操作资源的动词来规范
        https://api.weerlibrary.com/book
        https://api.weerlibrary.com/books # 查所有的书,而不是/get_all_books类的
  • 资源操作由请求方式决定
    '''操作资源一般都涉及到增删改查,用请求方式来表示动作'''	
    -https:// api.baidu.com/books             get请求时,获取所有书
    -https:// api.baidu.com/books/1           get请求时,拿主键为1的书
    -https:// api.baidu.com/books             post请求时,新增一本书
    -https:// api.baidu.com/books/1           put请求时,整体修改主键为1的书
    -https:// api.baidu.com/books/1           patch请求时,局部修改主键为1的书
    -https:// api.baidu.com/books/1           delete请求时,删除主键为1的书
  • 过滤
    '''通过url上传参的形式传递过滤条件'''	
    -https:// api.baidu.com/v1/zoos?limit=10   指定返回记录数量
    -https:// api.baidu.com/v1/zoos?offset=10  指定返回记录的开始位置
    -https:// api.baidu.com/v1/zoos?page=2&per_page=100 指定第几页及每页记录数
    -https:// api.baidu.com/v2/zoos?sortby=name&order=asc 按name排序,升序
    -https:// api.baidu.com/v2/zoos?animal_id=1 指定筛选条件
  • 响应状态码
    正常响应:
        200 常规请求
    	201 创建成功
    重定向响应:
    	301 永久重定向
    	302 暂时重定向
    客户端异常:
    	403 请求无权限
    	404 请求路径不存在
    	405 请求方法不存在
    服务器异常:
        500 服务器异常
    其它
        202 表示一个请求已经进入后台排队(异步任务)
        204 用户删除数据成功
        400 用户发出的请求有错误,服务器没有进行新建或修改数据的操作
        401 表示用户没有权限(令牌、用户名、密码错误)
  • 错误处理
    '''应返回错误信息'''
    eg:
        {
            error:'错误信息',
        }
  • 返回结果
    '''不同操作返回结果类型有异'''
    	/collection             GET 返回资源对象的列表(数组)
    	/collection/resource    GET 返回单个资源对象
    	/collection             POST 返回新生成的资源对象
    	/collection/resource    PUT返回完整资源对象
    	/collection/resource    PATCH返回完整资源对象
        /collection/resource    DELETE返回一个空文档
  • url需要请求访问的资源加上访问资源链接
    {
    	"status": 0,
    	"msg": "ok",
    	"results":[
    		 {
    			"name": "肯德基",
    			"img": "https: //image.baidu.com/kfc/001.png"
    		 }
    		  …
    	]
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weer-wmq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值