当前位置: 首页 > 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__'
    

相关文章:

【1.0】drf初识

【1.0】drf初识 【一】前后端开发模式 【1】前后端混合开发 【示例】flask混合、django混合【案例】bbs项目 模板:dtl语法(django template language)模板语法 {{}} /{% %}后端渲染 qs对象–遍历循环到模板中–使用模板语法渲染渲染完成后 得到纯粹的…...

SparkSQL---编程模型的操作,数据加载与落地及自定义函数的使用

一、SparkSQL编程模型的创建与转化 1、DataFrame的构建 people.txt数据: 1 zhangsan 20 2 lisi 29 3 wangwu 25 4 zhaoliu 30 5 tianqi 35 6 kobe 40 people.json数据:在SparkSQL—简介及RDD V.S DataFrame V.S Dataset编程模型详解里 1、从Spark数据…...

文件解析漏洞--IIS--Vulhub

文件解析漏洞 一、IIS解析漏洞 用windowserver2003安装IIS测试 1.1 IIS6.X 方法一:目录解析 在网站下建立文件夹的名字为.asp/.asa的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。 1.txt文件里是asp文件的语法查看当前时间 方…...

你知道缓存的这个问题到底把多少程序员坑惨了吗?

在现代系统中,缓存可以极大地提升性能,减少数据库的压力。 然而,一旦缓存和数据库的数据不一致,就会引发各种诡异的问题。 我们来看看几种常见的解决缓存与数据库不一致的方案,每种方案都有各自的优缺点 先更新缓存&…...

飞创直线模组桁架机械手优势及应用领域

随着工业自动化和智能制造的发展,直线模组桁架机械手极大地减轻了人类的体力劳动负担,在危险性、重复性高的作业环境中展现出了非凡的替代能力,引领着工业生产向自动化、智能化方向迈进。 一、飞创直线模组桁架机械手优势 飞创直线模组桁架…...

TongHttpServer 简介

1. 概述 随着网络技术的飞速发展,高并发大用户场景越来越普遍,单一应用服务节点已经不能满足并发需求,为了提高整个系统可靠性,扩展性,吞吐率,通常将多个应用服务器通过硬负载/软负载组成集群,负载均衡器根据不同负载算法将请求分发到各个应用服务器节点。 Tong…...

回溯法---组合总和

题目: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限…...

将Android Library项目发布到JitPack仓库

将项目代码导入Github 1.将本地项目目录初始化为 Git 仓库。 默认情况下,初始分支称为 main; 如果使用 Git 2.28.0 或更高版本,则可以使用 -b 设置默认分支的名称。 git init -b main 如果使用 Git 2.27.1 或更低版本,则可以使用 git symbo…...

JAVAWeb实战(后端篇)

因为前后端代码内容过多,这篇只写后端的代码,前端的在另一篇写 项目实战一: 1.创建数据库,表等数据 创建数据库 create database schedule_system 创建表,并添加内容 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------…...

【vs】实用调试技巧——学会写优秀的代码!

🦄个人主页:小米里的大麦-CSDN博客 🎏所属专栏:https://blog.csdn.net/huangcancan666/category_12718530.html ⚙️操作环境:Visual Studio 2022 目录 一、前言 二、什么是BUG? 三、调试是什么?有多重要? 一名优秀…...

数组声明方式

数组声明方式 一、 一维数组 元素数据类型[] 数组名; // 推荐元素数据类型 数组名[]; 二、 二维数组 元素数据类型[][] 数组名称; // 推荐元素数据类型 数组名称[][];元素数据类型[] 数组名称[]; 注: 对于第三种方式元素数据类型[] 数组名称[];,可…...

Docker中Docker网络-理解Docker0与自定义网络的使用示例

场景 CentOS7中Docker的安装与配置: CentOS7中Docker的安装与配置_centos docker sock-CSDN博客 在上面安装好Docker之后。 关于对Docker中默认docker0以及自定义网络的使用进行学习。 注: 博客:霸道流氓气质-CSDN博客 实现 理解dock…...

领域驱动大型结构之SYSTEM METAPHOR(系统隐喻)

在领域驱动设计(Domain-Driven Design, DDD)中,"System Metaphor" 是一种用于帮助开发团队和业务人员在理解和沟通系统时使用的概念模型。虽然 "System Metaphor" 并不是 DDD 的核心概念,但它在敏捷开发方法&…...

web前端开发一、VScode环境搭建

1、VScode安装live server插件,写完代码后,保存就会在浏览器自动更新,不需要再去浏览器点击刷新了 2、创建html文件 3、在文件中输入感叹号 ! 4、选择第一个,然后回车,就会自动输入html的标准程序 5、…...

DiAD代码use_checkpoint

目录 1、梯度检查点理解2、 torch.utils.checkpoint.checkpoint函数 1、梯度检查点理解 梯度检查点(Gradient Checkpointing)是一种深度学习优化技术,它的目的是减少在神经网络训练过程中的内存占用。在训练深度学习模型时,我们需…...

nginx出现Refused to apply inline style because it violates

Content Security Policy的错误。根据错误提示,nginx拒绝应用内联样式,因为它违反了内容安全策略(Content Security Policy)。内容安全策略是一种浏览器机制,用于防止潜在的安全漏洞,通过限制从外部来源加载…...

【中项第三版】系统集成项目管理工程师 | 第 11 章 规划过程组⑥ | 11.15 - 11.17

前言 第11章对应的内容选择题和案例分析都会进行考查,这一章节属于10大管理的内容,学习要以教材为准。本章上午题分值预计在15分。 目录 11.15 规划资源管理 11.15.1 主要输入 11.15.2 主要工具与技术 11.15.3 主要输出 11.16 估算活动资源 11.1…...

基础警务互联网app

智慧公安以大数据、云计算、人工智能、物联网和移动互联网技术为支撑,以“打、防、管、控”为目的,综合研判为核心,共享信息数据资源,融合业务功能,构建公安智慧大数据平台,实现公安信息数字化、网络化和智…...

为了方便写CURD代码,我在UTools写了个插件SqlConvert来生成代码!

-1. 前言 为了方便摸鱼,我之前写过一个通过sql生成代码的工具,但是服务器到期了,也就懒得重新部署了。 技术框架是 SpringBoot MybatisPlus Velocity Vue ElementUI Sql-ParseeSql-Parser-ui 0. Utools应用安装 官网地址: https://u.too…...

在国产芯片上实现YOLOv5/v8图像AI识别-【2.2】RK3588上C++开发环境准备及测试更多内容见视频

本专栏主要是提供一种国产化图像识别的解决方案,专栏中实现了YOLOv5/v8在国产化芯片上的使用部署,并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。 B站配套视频:https://www.bilibili.com/video/BV1or421T74f 板子…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...