当前位置: 首页 > news >正文

【1.0】drf初识

【1.0】drf初识

【一】前后端开发模式

【1】前后端混合开发

  • 【示例】flask混合、django混合
  • 【案例】bbs项目
    • 模板:dtl语法(django template language)模板语法 {{}} /{% %}
    • 后端渲染 qs对象–遍历循环到模板中–使用模板语法渲染
    • 渲染完成后 得到纯粹的html css js 不会再有模板语法了
    • 返回到客户端浏览器(页面静态化)

【2】前后端分离

  • 后端做完,只需要写接口api
  • 前端专门负责前端
  • 分开写完,再联调

【二】api接口

【1】介绍
  • 前后端分离,后端只需写接口,通过接口进行简单的数据交互
  • api接口规定了前后端信息交互规则的url链接,是前后端信息交互的媒介
    • 含有信息的url链接
    • 127.0.0.1:8080/login/?name=zhou&age=19
    • 127.0.0.1:8080/books/
【2】api接口含有的内容
  • url : url链接

  • 请求方式:get post delete put…

  • 请求参数:jsonxml格式的key-value类型

    • 地址栏中:(例如login/?name=zhou&age=18数据携带着数据)

    • 请求体中:不同的编码格式 urlencoded,json,form-data …

      # urlencoded:key=value的形式  -login/?name=zhou&age=16
      # json:json字符串的形式 {'name':'zxq','age':'20'}
      # form-data :文件混合数据
      
  • 响应结果:json或xml格式的数据

【3】(补充)请求协议:http
  • 请求首行:协议,协议版本,请求地址,请求方式
  • 请求头:key-value的形式
  • 请求体:不同的编码格式

【三】接口测试工具

【1】软件介绍

  • postman 老牌收费
  • apifox 国产免费
  • postwoman开源

【2】postman

  • 功能单一,收费\
  • 【下载】
    • 官网下载https://www.postman.com/
    • 选择版本(windows x64)
    • 下载好就是一个Postman-win64-Setup.exe,直接打开就会的到桌面快捷方式,直接使用

【3】apifox=postman+swagger[接口文档]+Mock[模拟测试数据]+JMeter[压测工具]

【四】restful规范

【1】介绍
  • 书写接口大家约定俗成遵守restful规范
  • restful是一种定义web API接口的设计风格,尤其适用于前后端分离的应用模式中
【2】十条规范
  • (1)数据的安全保障–url链接使用https
    - `http`
    - `https`更安全
    
  • (2)接口中带有api标识
    - https://api.baidu.com
    - https://www.baidu.com/api
    
  • (3)接口中中带版本标识
    - https://api.baidu.com/v1
    - https://api.baidu.com/v2
    
  • (4)数据命名的时候,尽量使用名词(可用复数)
    - https://api.baidu.com/users
    - https://api.baidu.com/books
    - https://api.baidu.com/book
    
  • (5)通过请求方式,决定资源操作方式(增删查改—>curd)
    - https://api.baidu.com/books   - get请求:获取所有书
    - https://api.baidu.com/books    - post请求:新增一本书书
    - https://api.baidu.com/books/1 - get请求:获取主键为1的书
    - https://api.baidu.com/books/1 - put请求:整体修改主键为1的书
    - https://api.baidu.com/books/1 - delete请求:删除主键为1的书
    
  • (6)请求地址中带过滤条件
    https://api.example.com/v1/zoos?name=大象
    
  • (7)响应中带状态码
    • http响应状态码:

      1xx,2xx,3xx,4xx,5xx
      
    • 但是公司自己会定义状态码

      • 例如 100错误 101…错误
    • 一般,一个软件都有固定的状态码,出现错误,可以直接搜状态码

  • (8)响应中带错误信息
    -{code:101,msg:"用户名密码错误"}
    -{code:100,msg:"成功"}
    
  • (9)返回结果,针对不同的操作,有不同的返回规范
    #get请求返回所有结果
    GET /collection:返回资源对象的列表(数组)  [{name:红楼梦,price:100},{name:红楼梦1,price:90}]
    
    #get请求返回某个数据
    GET /collection/resource:返回单个资源对象{name:红楼梦,price:100}
    
    #post请求增加数据--返回增加的数据
    POST /collection:返回新生成的资源对象-{name:红楼梦,price:100}
    
    #put返回完整的资源对象
    PUT /collection/resource:返回完整的资源对象-{name:红楼梦,price:100}
    
    #delete删除数据 返回一个空文档
    DELETE /collection/resource:返回一个空文档
    
  • (10)返回的数据中带有url链接
【3】比较好的接口返回格式
  • 【示例】

    {"code": 0,"msg": "ok","results":[{"name":"肯德基(罗餐厅)","location":{"lat":31.415354,"lng":121.357339},"address":"月罗路2380号","province":"上海市","city":"上海市","area":"宝山区","street_id":"339ed41ae1d6dc320a5cb37c","telephone":"(021)56761006","detail":1,"uid":"339ed41ae1d6dc320a5cb37c"}...]
    }
    

【五】序列化和反序列化

【1】介绍

  • 序列化:将自己的数据—序列化成—别人想要的数据格式(自己–>别人)
  • 反序列化:将别人的数据格式—序列化成–自己想要的数据格式(别人–>自己)

【2】接口中序列化

  • 【介绍】接口是前后端数据交互的一个媒介,一些框架会在前后端数据交互的时候,帮助我们处理好数据的序列化和反序列化
  • 【步骤】django框架举例
    • 序列化:把我们后端的数据【字典、列表、对象】(在django中获取到的数据默认是模型对象(queryset对象))转化成指定的格式【json格式字符串,pickle二进制】提供给别人
    • 反序列化:如前端js传过来的json数据,对于python来说就是字符串,需要反序列化成模型类对象

【六】drf安装和快速使用

【1】介绍

  • 全称django rest framework
  • django框架上,一个可以快速实现restful规范接口的快速开发框架

【2】安装

  • drf是安装在django之上的,目前的二版本支持django4.0以上,所以要版本契合

  • #先控制django的版本
    pip3 install django==4.2.14
    #在django的基础上下载drf
    pip3 install djangorestframework --upgrade
    

【3】简单使用

  • 要求:利用django框架,写出五个接口,接口中带有相关的信息参数

  • urls

    #在总urls做路由分发
    
  • models.py

    #定义模型表
    from django.db import modelsclass Book(models.Model):name = models.CharField(max_length=32)price = models.IntegerField()
    
  • views

    #定义视图函数
    from .models import Book
    from .serializer import BookSerializer
    from rest_framework.viewsets import ModelViewSetclass BookView(ModelViewSet):serializer_class = BookSerializerqueryset = Book.objects.all()
    
  • serializer.py

    from rest_framework import serializers
    from .models import Book
    class BookSerializer(serializers.ModelSerializer):class Meta:model=Bookfields='__all__'
    

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何使用 API list 极狐GitLab 群组中的镜像仓库?
  • Docker 部署常用中间件(redis,rabbitMQ,mysql8,es,kibana,nginx等)亲测成功~~~
  • Linux没有telnet 如何测试对端的端口状态
  • c++中的斐波那契数列(Fibonacci Sequence)和背包问题(Knapsack Problem)
  • 3. 类的生命周期
  • 深度学习loss
  • 【QT】QT 窗口(菜单栏、工具栏、状态栏、浮动窗口、对话框)
  • 在KubeSphere 容器中快速部署使用 GitLab 并构建 DevOps 项目
  • 使用法国云手机进行面向法国的社媒营销
  • Python 潮流周刊#62:试用自由线程 Python(摘要)
  • 源码编译构建LAMP
  • string indices must be integers
  • 浏览器打开抽奖系统html
  • 怎么使用github上传XXX内所有文件
  • springboot给属性赋值的两种方式(yaml与properties)
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 07.Android之多媒体问题
  • Android交互
  • AngularJS指令开发(1)——参数详解
  • AWS实战 - 利用IAM对S3做访问控制
  • C++类中的特殊成员函数
  • Computed property XXX was assigned to but it has no setter
  • conda常用的命令
  • Consul Config 使用Git做版本控制的实现
  • E-HPC支持多队列管理和自动伸缩
  • ESLint简单操作
  • gcc介绍及安装
  • Java 23种设计模式 之单例模式 7种实现方式
  • JSDuck 与 AngularJS 融合技巧
  • Linux中的硬链接与软链接
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • spring boot下thymeleaf全局静态变量配置
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • vue脚手架vue-cli
  • 不上全站https的网站你们就等着被恶心死吧
  • 聊聊sentinel的DegradeSlot
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 微服务框架lagom
  • 智能合约Solidity教程-事件和日志(一)
  • ​secrets --- 生成管理密码的安全随机数​
  • # SpringBoot 如何让指定的Bean先加载
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #微信小程序:微信小程序常见的配置传旨
  • (2)nginx 安装、启停
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (3) cmake编译多个cpp文件
  • (52)只出现一次的数字III
  • (day18) leetcode 204.计数质数
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (算法)大数的进制转换
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • ******IT公司面试题汇总+优秀技术博客汇总