DRF 01
DRF
drf是Django的一个插件
安装:
pip install djangorestframework
使用drf需要先在settings.py配置文件中注册
接口
概念
接口就是一种url链接, 你按照相应的格式向这个url提交数据, 可以获取相应的响应结果
概括来说就是四大点
- url链接: https://api.map.baidu.com/place/v2/search
- 请求方式: get, post, put, patch, delete
- 请求参数
- 响应结果
YApi接口文档
接口文档就是将接口的四部分翻译成文档形式 - word/md/Yapi
YApi是去哪网大前端技术中心的一个开源可视化接口管理平台
Postman接口测试
- Postman是一款免费的, 用于接口调试的可视化软件
- 下载: https://www.getpostman.com/downloads/
RESTful接口规范
- RESTful是目前最流行的API设计规范
URL设计
1.url链接一般采用https协议进行传输 (安全)
2.用api关键字标识接口url
https://api.baidu.com/
3.在url链接中标识数据版本
https://api.baidu.com
4.接口操作的数据即使资源, 在接口url中只体现资源的名称, 不体现操作资源的方式动词
https://api.baidu.com/user
5.群资源操作, 一般有额外限制条件: 排序, 分页, 限制等
https://api.baidu.com/v1/books/?ordering=-price&limit=3
响应结果
响应状态码
1xx: 基本信息
2xx: 成功
3xx: 重定向
4xx: 客户端错误
400: 错误请求
403: 请求无权限
404: 请求资源不存在
5xx: 服务器异常
数据状态码
一般是前后台约定的规则
0: 成功
1: 失败 - 1xx: 具体失败信息(要在接口文档中明确写出)
2: 无数据 - 2xx: 具体无数据信息(要在接口文档中明确写出)
数据状态信息
不仅仅是对数据状态码的解释, 更多是对结果的描述, 给前台开发者阅读的
数据本身
一般包括常量, 数组和字典等, 如有子资源(图片, 音频, 视频)则返回其url链接
{
"status": 0,
"msg": 'ok',
"results": [{
"name": "西游记",
"img": "https://api.baidu.com/media/book/xyj.png"
}]
}
五大请求方式
1.get: 获取单个或者多个资源
2.post: 新增单个或者多个资源
3.put: 整体修改单个或者多个资源
4.patch: 局部修改单个或者多个资源
方式与put完全相同, 不同的是: 操作的资源如果有5个key-value键值对, put请求提供的字典必须全包含, 但
patch提供的字典包含的键值对0~5个都可以
5.delete: 删除单个或者多个资源
多删: 提供多个资源组件数据, 完成群删, 不做任何资源返回(一般我们会返回结果信息: 成功|失败)
单删: 不需要提供额外的数据, 完成单删, 不做任何资源返回(一般我们会返回结果信息: 成功|失败)
简单实现
class BookView(View):
def get(self, request, *args, **kwargs):
id = kwargs.get('id')
# 单查
if id:
book = models.Book.objects.filter(id=id).values('name', 'price').first()
if not book:
return JsonResponse({
'status': 0,
'msg': '单查 资源不存在'
}, json_dumps_params={'ensure_ascii': False})
return JsonResponse({
'status': 0,
'msg': '单查 ok',
'result': book
}, json_dumps_params={'ensure_ascii': False})
# 群查
else:
book_query = models.Book.objects.values('name', 'price')
books = list(book_query)
return JsonResponse({
'status': 0,
'msg': '群查 ok',
'result': books,
}, json_dumps_params={'ensure_ascii': False})
DRF 01的更多相关文章
- 0013 基于DRF框架开发(01 基类视图 APIView)
之前学习了模型序列化和普通序列化,我们用最简单的视图和url实现了对序列化的操作. 而实际上,象之前那种由DRF自动生成所有的视图和url的情况,在应用是使用很少.而需要用户根据实际业务需求,自定义视 ...
- 0008 基于DRF框架开发(01 DRF开发的基本流程)
1 创建模型 由于之前在<004 工程配置>中,已在Applications/Organizations/models中创建了一个UserInfo模型.此处引用这个模型. from dja ...
- drf基础知识01
drf框架 """ 接口: 接口规范: drf生命周期: 序列化组件: 三大认证组件: 过滤.筛选.排序.分页组件: 请求.响应.解析.异常模块: jwt: " ...
- 01.drf文档及外键字段反序列化
一 安装drf 1.1 安装库 pip install djangorestframework pip install markdown # Markdown support for the brow ...
- 01 drf源码剖析之restful规范
01 restful规范 目录 01 restful规范 1. 什么是restful规范 2.restful规范详细 1. 什么是restful规范 restful是一套规则,是程序间进行数据传输的一 ...
- drf作业01
api\urls from django.conf.urls import url from . import views urlpatterns = [ url(r'^cars/$',views.C ...
- Restful API学习Day5 - DRF之限制 分页 解析器和渲染器
参考文档: Django REST framework基础:认证.权限.限制 Django REST framework基础:分页 Django REST framework基础:解析器和渲染器 一. ...
- python 全栈开发,Day104(DRF用户认证,结算中心,django-redis)
考试第二部分:MySQL数据库 6. MySQL中char和varchar的区别(1分) char是定长,varchar是变长. char的查询速度比varchar要快. 7. MySQL中va ...
- python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)
昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...
随机推荐
- 关于mysql索引---联合索引
结论: mysql联合索引,联合索引以哪个字段开始很重要. 如果 联合索引字段为 1,2,3,4 那么如果查询条件为 6,7,8,1 这样也会走上面的联合索引 但是如果查询条件不是从1开始那么则 ...
- APP手工项目02-用例编写-测试报告-fiddler弱网测试
回顾 APP专项测试(兼容性,安装,卸载,升级,交叉事件,PUSH消息,性能,其他类型) 项目环境(开发环境,测试环境,准生产环境,生产环境) APP内测发布平台(蒲公英,fir.im)支持apk,i ...
- LVS搭建负载均衡集群(一)——NAT模式
(1).集群技术的分类 集群技术主要分为三大类:负载均衡(Load Balance)集群,简称LB集群:高可用(High Availability)集群,简称 HA 集群:高性能计算(High Per ...
- pytorch0.4.1安装
pytorch官网:https://pytorch.org/ 这里安装pytorch0.4.1版本(最新版本为1.3.0系列,但是在跑github上的一些项目时会不断地报“ UseWarinig:Le ...
- weblogic12.1.3安装
weblogic weblogic12.1.3安装 环境: centos7.5 ip: 192.168.0.94 1.安装jdk 2.安装 weblogic 下载.解压安装包 wls1213_dev. ...
- Java中四个作用域的可见范围
作用域 当前类 同一包 子孙类 其他包 public √ √ √ √ protected √ √ √ × friendly或default(即没有修饰符时的权限) √ √ × × private √ ...
- maven生命周期及每个阶段自动关联的插件
生命周期Lifecycle http://maven.apache.org/ref/3.6.1/maven-core/lifecycles.html#default_Lifecycle clean 包 ...
- 详解Nginx中HTTP的keepalive相关配置
http keepalive在http早期 ,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接.使用keep-alive可以改善这种状态,即在一次TCP连接 ...
- IO流学习
1,流是一组有顺序的,有起点和重点的字节集合,是对数据传输的总称和抽象.即数据在两个设备之间的传输称作流.流的本质就是数据传输,根据数据传输的特性,将流抽象为各种累,方便直观的进行数据操作. 2,根据 ...
- 扩展Asp.Net Core中的IdentityUser类
虽然Asp.Net Core.Identity提供了IdentityUser类,但是在有些情况下我们需要一些额外的用户信息,比如性别,年龄等,这时候就需要来扩展IdentityUser类以达到我们的需 ...