DRF

  • drf是Django的一个插件

  • 安装: pip install djangorestframework

  • 使用drf需要先在settings.py配置文件中注册

接口

概念

  • 接口就是一种url链接, 你按照相应的格式向这个url提交数据, 可以获取相应的响应结果

  • 概括来说就是四大点

YApi接口文档

  • 接口文档就是将接口的四部分翻译成文档形式 - word/md/Yapi

  • YApi是去哪网大前端技术中心的一个开源可视化接口管理平台

  • 测试网址: http://yapi.demo.qunar.com/

Postman接口测试

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的更多相关文章

  1. 0013 基于DRF框架开发(01 基类视图 APIView)

    之前学习了模型序列化和普通序列化,我们用最简单的视图和url实现了对序列化的操作. 而实际上,象之前那种由DRF自动生成所有的视图和url的情况,在应用是使用很少.而需要用户根据实际业务需求,自定义视 ...

  2. 0008 基于DRF框架开发(01 DRF开发的基本流程)

    1 创建模型 由于之前在<004 工程配置>中,已在Applications/Organizations/models中创建了一个UserInfo模型.此处引用这个模型. from dja ...

  3. drf基础知识01

    drf框架 """ 接口: 接口规范: drf生命周期: 序列化组件: 三大认证组件: 过滤.筛选.排序.分页组件: 请求.响应.解析.异常模块: jwt: " ...

  4. 01.drf文档及外键字段反序列化

    一 安装drf 1.1 安装库 pip install djangorestframework pip install markdown # Markdown support for the brow ...

  5. 01 drf源码剖析之restful规范

    01 restful规范 目录 01 restful规范 1. 什么是restful规范 2.restful规范详细 1. 什么是restful规范 restful是一套规则,是程序间进行数据传输的一 ...

  6. drf作业01

    api\urls from django.conf.urls import url from . import views urlpatterns = [ url(r'^cars/$',views.C ...

  7. Restful API学习Day5 - DRF之限制 分页 解析器和渲染器

    参考文档: Django REST framework基础:认证.权限.限制 Django REST framework基础:分页 Django REST framework基础:解析器和渲染器 一. ...

  8. python 全栈开发,Day104(DRF用户认证,结算中心,django-redis)

    考试第二部分:MySQL数据库 6.  MySQL中char和varchar的区别(1分) char是定长,varchar是变长. char的查询速度比varchar要快. 7.   MySQL中va ...

  9. python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

随机推荐

  1. python 日期计算

    from datetime import timedelta,datetime import time tdy = datetime.today() tdy = tdy.strftime(" ...

  2. 总结Lock和synchronized的区别

    1. Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现,Lock是代码层面的实现. 2. Lock可以选择性的获取锁,如果一段时间获取不到, ...

  3. ES6内建对象的继承

    在ES6之前, JS是无法通过继承的方式创建属于自己的特殊数组的, 也就是说可以使用原型链来继承数组的一些方法, 但是某些返回一个数组的方法返回的值还是一个Array的实例, 例如slice, len ...

  4. Qt编写自定义控件45-柱状标尺控件

    一.前言 这个控件写了很久了,是最早期的一批控件中的一个,和温度计控件类似,都是垂直的进度条,可以设置不同的背景颜色,左侧的刻度也可以自由设定,还提供了动画效果,其实就是开启定时器慢慢的进度到设定的目 ...

  5. python中列表,元组的乘法

    直接上code吧,还可以这么玩儿 li=[1,] li=li*3 print(li) out: [1, 1, 1] =========== >>> t=(1,2) >>& ...

  6. python调用shell命令

    1.subprocess介绍 官方推荐 subprocess模块,os.system(command) 这个废弃了 亲测 os.system 使用sed需要进行字符转义,非常麻烦 python3 su ...

  7. C# 3DES加密解密,差点要了命

    最近 一个项目.net 数据采用3DES加密.下面分享一下,这里的KEY采用Base64编码,便用分发,c#的Byte范围是0-255核心是确定Mode和Padding,关于这两个的意思可以搜索3DE ...

  8. destoon 6.0 手机站支持在所有浏览器访问

    我们的在本地调试destoon 6.0的手机站模板时,用浏览器的自带审查元素很不方便. 可是destoon 默认是在电脑端打不开手机站,如果这个设置能够去除掉,那就可以了. 去掉这个限制,指需要两步 ...

  9. 【c# 学习笔记】接口

    一.什么是接口 接口 可以理解为对一组方法声明进行的同一命名,但这些方法没有提供任何实现.也就是说,把一组方法声明在一个接口中,然后继承于该接口的类都 需要实现这些方法. 例如,很多类型(比如int ...

  10. Nginx+keepalived 高可用双机热备(主从模式/双主模式)

    基础介绍负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行. 关于负载均衡介绍,可以参考:li ...