在开发Web应用中,有两种应用模式:
为了在团队内部形成共识、防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写的接口,用途一目了然,减少双方之间的合作成本。
通过网络,规定了前后台信息交互规则的url链接,也就是前后台信息交互的媒介
Web API接口和一般的url链接还是有区别的,Web API接口简单概括有下面四大特点
url:长得像返回数据的url链接
请求方式:get、post、put、patch、delete
请求参数:json或xml格式的key-value类型数据
响应结果:json或xml格式的数据
上方请求参数的output参数值决定了响应数据的格式
数据
|
|
Postman是一款接口调试工具,是一款免费的可视化软件,同时支持各种操作系统平台,是测试接口的首选工具。
Postman可以直接从官网:https://www.getpostman.com/downloads/下载获得,然后进行傻瓜式安装。
REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征性状态转移)。 它首次出现在2000年Roy Fielding的博士论文中。
RESTful是一种定义Web API接口的设计风格,尤其适用于前后端分离的应用模式中。
这种风格的理念认为后端开发任务就是提供数据的,对外提供的是数据资源的访问接口,所以在定义接口时,客户端访问的URL路径就表示这种要操作的数据资源。
事实上,我们可以使用任何一个框架都可以实现符合restful规范的API接口。
url链接一般都采用https协议进行传输
注:采用https协议,可以提高数据交互过程中的安全性
用api关键字标识接口url:
注:看到api字眼,就代表该请求url链接是完成前后台数据交互的
在url链接中标识数据版本
注:url链接中的v1、v2就是不同数据版本的体现(只有在一种数据资源有多版本情况下)
接口一般都是完成前后台数据的交互,交互的数据我们称之为资源
注:一般提倡用资源的复数形式,在url链接中奖励不要出现操作资源的动词,错误示范:https://api.baidu.com/delete-user
特殊的接口可以出现动词,因为这些接口一般没有一个明确的资源,或是动词就是接口的核心含义
|
|
|
|
|
|
比较好的接口返回
|
|
api接口开发,最核心最常见的一个过程就是序列化,所谓序列化就是把数据转换格式,序列化可以分两个阶段:
序列化: 把我们识别的数据转换成指定的格式提供给别人。
例如:我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以我们需要把数据进行序列化,变成字符串或者json数据,提供给别人。
反序列化:把别人提供的数据转换/还原成我们需要的格式。
例如:前端js提供过来的json数据,对于python而言就是字符串,我们需要进行反序列化换成模型类对象,这样我们才能把数据保存到数据库中。
核心思想: 缩减编写api接口的代码
Django REST framework是一个建立在Django基础之上的Web 应用开发框架,可以快速的开发REST API接口应用。在REST framework中,提供了序列化器Serialzier的定义,可以帮助我们简化序列化与反序列化的过程,不仅如此,还提供丰富的类视图、扩展类、视图集来简化视图的编写工作。REST framework还提供了认证、权限、限流、过滤、分页、接口文档等功能支持。REST framework提供了一个API 的Web可视化界面来方便查看测试接口。
官方文档:https://www.django-rest-framework.org/
github: https://github.com/encode/django-rest-framework/tree/master
DRF需要以下依赖:
DRF是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django环境而无需从新创建。(若没有Django环境,需要先创建环境安装Django)
前提是已经安装了django,建议安装在虚拟环境
|
|
|
|
使用pycharm打开项目,设置虚拟环境的解析器,并修改manage.py中的后缀参数。
在settings.py的INSTALLED_APPS中添加’rest_framework’。
|
|
接下来就可以使用DRF提供的功能进行api接口开发了。在项目中如果使用rest_framework框架实现API接口,主要有以下三个步骤:
接下来,我们快速体验下四天后我们学习完成drf以后的开发代码。接下来代码不需要理解,看步骤。
|
|
为了方便测试,所以我们可以先创建一个数据库。
|
|
把students子应用添加到INSTALL_APPS中
初始化数据库连接
|
|
主引用中__init__.py
设置使用pymysql作为数据库驱动
|
|
settings.py配置文件中设置mysql的账号密码
|
|
终端下,执行数据迁移。
|
|
错误列表
|
|
解决方案:
|
|
|
|
解决方法:
backends/mysql/operations.py146行里面新增一个行代码:
例如,在django项目中创建学生子应用。
|
|
在syudents应用目录中新建serializers.py用于保存该应用的序列化器。
创建一个StudentModelSerializer用于序列化与反序列化。
|
|
在students应用的views.py中创建视图StudentViewSet,这是一个视图集合。
|
|
在students应用的urls.py中定义路由信息。
|
|
最后把students子应用中的路由文件加载到总路由文件中.
|
|
运行当前程序(与运行Django一样)
|
|
在浏览器中输入网址127.0.0.1:8000,可以看到DRF提供的API Web浏览页面:
1)点击链接127.0.0.1:8000/stu/students 可以访问获取所有数据的接口,呈现如下页面:
2)在页面底下表单部分填写学生信息,可以访问添加新学生的接口,保存学生信息:
点击POST后,返回如下页面信息:
3)在浏览器中输入网址127.0.0.1:8000/stu/students/5/,可以访问获取单一学生信息的接口(id为5的学生),呈现如下页面:
4)在页面底部表单中填写学生信息,可以访问修改学生的接口:
点击PUT,返回如下页面信息:
5)点击DELETE按钮,可以访问删除学生的接口:
返回,如下页面:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
原文:https://www.cnblogs.com/bubu99/p/13763214.html