vue项目和django项目交互补充,drf介绍,restful规范
一、vue项目与django项目的交互
- vue中的发送ajax请求,其中的参数有:
created() {
this.$axios({
url: 'http://127.0.0.1:8000/test/', // 请求地址
method: 'post', // 请求方式
params: { // 拼接参数
a: 1
},
data: { // data数据包
x: 10
},
headers: { // 请求头
authorization: 'abc.def.xyz', // 请求头内容
token: 1,
owen: 2,
// 后台:request.META.get('HTTP_参数名全大写')
}
}).then(response => { // then相当于success , 进行回调函数
console.log('成功:', response.data)
}).catch(error => { // 错误捕捉
console.log('失败:', error.response.data) // error.response.data 错误信息
})
}
- django后端的request的方法
request.META # 获取请求头
CORS_ORIGIN_ALLOW_ALL = True # 允许跨域
CORS_ALLOW_HEADERS = [ # 重写CORS_ALLOW_HEADERS,定义允许访问的请求头,前面的都是系统默认的要再加上
"accept",
"accept-encoding",
"authorization",
"content-type",
"dnt",
"origin",
"user-agent",
"x-csrftoken",
"x-requested-with",
"token",
"owen",
]
二、drf(Django-restframework)
1. drf主要知识点
"""
1、接口:接口的概念、数据接口文档、接口规范(restful)、Postman接口测试工具
2、drf请求生命周期 - CBV
3、drf的基础组件:请求、响应、渲染、解析、异常
4、drf的序列化(核心):序列化、模型序列化、群操作序列化
5、drf的视图家族:视图类(常用)、视图工具类、工具视图类(常用)、视图集
6、drf的三大认证(核心):认证、权限、频率
7、drf的过滤:筛选、搜索、排序、分页、区间、自定义
"""
2. drf框架安装
"""
drf框架安装:
1)drf是Django的插件,所以要提前按照Django
2)终端中使用命令:python pip install djangorestframework
3)使用drf时,要在settings中注册
"""
3. web接口(WEB API)
"""
什么是web接口:就是 采用某种请求方式提交请求参数,获得响应数据的 url链接
四部分:url链接 + 请求方式 + 请求参数 + 响应数据
web接口文档的书写:包含一个接口的访问的url链接的格式和需要的请求参数,以及访问后其响应数据。
详情见:https://www.cnblogs.com/xiaoyuanqujing/articles/11869745.html
"""
4. restful接口规范
"""
url链接:
1)接口都是操作前后台数据的,所以需要保证数据的安全性
采用https协议
2)接口用来操作数据,与网址(操作页面)有区别,所以用特定的关键字表示接口
api关键字
- https://api.baidu.com
- https://www.baidu.com/api
3)接口操作的数据称之为 资源,在url中只体现 资源 名称(名词),不体现操作资源的方式动词
常规资源接口
- https://api.baidu.com/books/
- https://api.baidu.com/books/(pk)/
非常规接口 - 和某资源不是特别密切或是不止一种资源
- https://api.baidu.com/login/
- https://api.baidu.com/place/search/
4)如果一个资源存在多版本结果,在url链接中要用特定符号来兼容多版本共存
v1|v2
- https://api.baidu.com/v1/books/
- https://api.baidu.com/v2/books/
5)群资源操作,一般还有额外的限制条件,如排序、限制调试、分页等等
?限制条件
- https://api.baidu.com/v1/books/?ordering=-price&limit=3
请求方式
6)五大请求方式
get:获取单个或多个资源
- https://api.baidu.com/books/
群查,返回多个结果对象
- https://api.baidu.com/books/(pk)/
单查,返回单个结果对象
post:新增单个或多个资源(都是一个url)*********************************
- https://api.baidu.com/books/
单增,提交单个数据字典,完成单增,返回单个结果对象
群增,提供多个数据字典的数组,完成群增,返回多个结果对象
put:整体修改单个或多个资源
- https://api.baidu.com/books/
整体修改多个,提供多个数据字典的数组(数据字典中要包含主键),完成群改,返回多个结果对象
- https://api.baidu.com/books/(pk)/
整体修改单个,提供单个数据字典(主键在url中体现),完成单改,返回单个结果对象
patch:局部修改单个或多个资源
方式与put完全相同,不同的是:操作的资源如果有5个key-value键值对,put请求提供的字典必须全包含,但是patch提供的字典包含的键值对0~5个都可以
delete:删除单个或多个资源
- https://api.baidu.com/books/
多删,提供多个资源主键数据,完成群删,不做任何资源返回(一般我们会返回结果信息:成功|失败)
- https://api.baidu.com/books/(pk)/
单删,不需要提供额外数据,完成单删,不做任何资源返回(一般我们会返回结果信息:成功|失败)
响应结果:
7)响应对象中要包含网络状态码(网络状态信息和网络状态码捆绑出现,不要额外设置):
1xx:基本信息
2xx:成功 - 200基本 201新增成功
3xx:重定向
4xx:客户端错误 - 400错误请求;403请求无权限;404请求资源不存在
5xx:服务端错误 - 500服务器错误
8)数据状态码(一般都是前后台约定规则):
0:成功
1:失败 - 1xx:具体失败信息(要在接口文档中明确写出)
2:无数据 - 2xx:具体无数据信息(要在接口文档中明确写出)
9)数据状态信息(一般不仅仅是对数据状态码的解释,更多是对结果的描述,给前台开发者阅读的)
10)数据结果(常量、数组、字典),如果有子资源(图片、音频、视频),返回资源的url链接
{
"status": 0,
"msg": 'ok',
"results": [{
"name": "西游记",
"img": "https://api.baidu.com/media/book/xyj.png"
}]
}
"""
三、django的CBV模型生命周期
- django后端启动,执行urls文件中的各
as_view()
方法——》 - 前端发送请求到后端对应的url——》
- 后端根据请求方式调用类中对应的方法,再返回处理结果给前端
vue项目和django项目交互补充,drf介绍,restful规范的更多相关文章
- DRF之restful规范、Postman接口测试
一. DRF简介 Django REST框架是一个功能强大且灵活的工具包,用于构建Web API. 使用REST框架的一些原因: 该网站可浏览API是你的开发人员一个巨大的可用性胜利. 身份验证策略包 ...
- 基于Django的Rest Framework框架的RESTful规范研究
一.什么是RESTful规范 总的来说:RESTful规范就是一个非技术,人为约定的一个面向资源的架构理念. REST与技术无关,代表的是一种软件架构风格,REST是Representational ...
- 荣誉墙项目day26 django 项目路由配置
项目路由配置文件包括:配置目录里的urls.py文件和各个app目录里的urls.py文件 1.include()——从项目主路由分配到各APP主路由 from django.conf.urls im ...
- Pipenv管理项目环境--Django项目的一些最佳实践
virtualenv --- 使用不方便 提升效率,管理更便捷--- pipenv 新建环境:: pip3 install pipenv 在项目下,用pipenv安装 Djagno pipenv in ...
- django项目、vue项目部署云服务器
目录 上线架构图 服务器购买与远程连接 安装git 安装mysql 安装redis(源码安装) 安装python3.8(源码安装) 安装uwsgi 安装虚拟环境 安装nginx(源码安装) vue项目 ...
- vue+uwsgi+nginx部署项目
首先先下载好前后端项目 先从前端vue搞起 要在服务器上,编译打包vue项目,必须得有node环境 下载node二进制包,此包已经包含node,不需要再编译 wget https://nodejs.o ...
- 使用Nginx+uWSGI部署Django项目
1.linux安装python3环境 参考链接:https://www.cnblogs.com/zzqit/p/10087680.html 2.安装uwsgi pip3 install uwsgi l ...
- VSCode搭建django项目
之前我们使用VSCode搭建C#项目,今天写一篇关于django项目的搭建,其实以其说是搭建django框架,不如说是如何通过vscode开发django项目:django官网:https://www ...
- 转载: 我如何使用 Django + Vue.js 快速构建项目
原文链接: https://www.ctolib.com/topics-109796.html 正文引用如下 引言 大U的技术课堂 的新年第一课,祝大家新的一年好好学习,天天向上:) 本篇将手把手教你 ...
随机推荐
- react项目开发环境搭建
1.环境安装,首先要安装node http://nodejs.cn/ 进入nodejs下载,你是window就下在window的反之,安装下一步下一步...就好了 安装成功了试试 node -v , ...
- 【LOJ】#3095. 「SNOI2019」字符串
LOJ#3095. 「SNOI2019」字符串 如果两个串\(i,j\)比较\(i < j\),如果离\(a_{i}\)最近的不同的数是\(a_{k}\),如果\(j < k\)那么\(i ...
- 给定进制下1-n每一位数的共享(Digit sum)The Preliminary Contest for ICPC Asia Shanghai 2019
题意:https://nanti.jisuanke.com/t/41422 对每一位进行找循环节规律就行了. #define IOS ios_base::sync_with_stdio(0); cin ...
- Python接口开发小知识
关于数据库设计 接口开发多学习数据库表操作,这是要点 不存在删除数据,每个可能被删除数据的表加一个is_active属性 不同的表可以有多个相同的字段,字段属性少用禁止非空 不要设置太多主外键(高内聚 ...
- Ruby Rails学习中:登陆
登陆 一. Sessions 控制器 登录和退出功能由 Sessions 控制器中相应的 REST 动作处理 : 登录表单在 new 动作中处理, 登录的过程是向 create 动作发送 POST 请 ...
- 开发过程遇到的css样式问题记录
一.移动端 1.部分安卓机圆角border-radius失效,显示为方形状? background-clip: padding-box; 2.部分安卓机字体图标出现锯齿? 使用iconfont图标 ...
- pidof---找寻PID
pidof---找寻pid 1.根据守护进程找到pid [root@localhost ~]# pidof sshd 2542 1622 [root@localhost ~]# ps -ef | gr ...
- C++入门基础知识(一)
一:关键字 在C语言中,我们已经学习过了很多的关键字,例如:static,struct等,下面展现一下C++中的一些关键字. 二:命名空间 在C/C++中,变量.函数和类都是大量存在的,这些变量.函数 ...
- 帝国cms常用标签
.loop获取时间标签 /*获取年月日,时分秒.可以按照自己的需求单独获取年,或者月.*/ <?=date("Y-m-d H:i:s",$bqr[newstime])?> ...
- vue.js项目开发实战笔记001——准备工作
1,Vue.js 是一套构建用户界面的渐进式框架. 2,Vue.js 是由尤雨溪开发出的,最早发布于2014年2月. 3,引用vue.js地址一CDN: <script src="ht ...