DRF之引入

news2025/1/23 10:46:31

目录

一、web应用模式

【1】前后端混合开发

【2】前后端分离

二、API接口

三、接口测试工具:Postman

四、RESTful API规范

【1】什么是RESTful

【2】RESTful API的规范

2.1 数据的安全保障

2.2 接口特征表现

2.3 多数据版本共存

2.4 数据即是资源,均使用名词(可复数)

2.5 资源操作由请求方式决定(method)

2.6 url中带搜索或过滤条件​​​​​​​

2.7 响应状态码

2.8 返回中带错误信息

2.9 返回结果,符合以下规范

2.10 返回数据中带url链接


一、web应用模式

【1】前后端混合开发

  • 后端人员
    • 既要写后端,django
    • 又要写前端

【2】前后端分离

  • 后端人员
    • 只写后端,写一个个的API接口
  • 前端人员
    • 只写前端
  • 最后项目写完
    • 前后端联调

二、API接口

为了在团队内部形成共识、防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写的接口,用途一目了然,减少双方之间的合作成本。

通过网络,规定了前后台信息交互规则的url链接,也就是前后台信息交互的媒介。它称之为API接口。

前端:

  • 向后端发送请求,获取数据
  • 127.0.0.1:8080/index --->返回数据

后端:

  • 请求某个地址,返回固定的数据

Web API接口和一般的url链接还是有区别的,Web API接口简单概括有下面四大特点

  • url:长得像返回数据的url链接

    • https://api.map.baidu.com/place/v2/search
  • 请求方式:get、post、put、patch、delete

    • 采用get方式请求上方接口
  • 请求参数:json或xml格式的key-value类型数据

    • ak:6E823f587c95f0148c19993539b99295
    • region:上海
    • query:肯德基
    • output:json
  • 响应结果:json或xml格式的数据

    • 上方请求参数的output参数值决定了响应数据的格式

三、接口测试工具:Postman

Postman是一款接口调试工具,是一款免费的可视化软件,同时支持各种操作系统平台,是测试接口的首选工具。

Postman可以直接从官网:https://www.getpostman.com/downloads/下载获得,然后进行傻瓜式安装。(注:需要注册一下使用或者一个Google账号也可)

  • 工作面板

  • 简易的get请求

  • 简易的post请求

  • 案例:请求百度地图接口

四、RESTful API规范

【1】什么是RESTful

REST全称是Representational State Transfer(中文意思是表征性状态转移)。 它首次出现在2000年Roy Fielding的博士论文中。

RESTful是一种定义Web API接口的设计风格,尤其适用于前后端分离的应用模式中。

【2】RESTful API的规范

2.1 数据的安全保障

  • url链接一般都采用https协议进行传输

    • https是http+ssl --->  安全的超文本传输协议

注:采用https协议,可以提高数据交互过程中的安全性

2.2 接口特征表现

  • 在API地址中带接口标识,我们一般放在地址栏中(放在域名中):

    • https://api.baidu.com
    • https://www.baidu.com/api

    注:看到api字眼,就代表该请求url链接是完成前后台数据交互的

2.3 多数据版本共存

  • 在url链接中标识数据版本

    • https://api.baidu.com/v1
    • https://api.baidu.com/v2

    注:url链接中的v1、v2就是不同数据版本的体现(只有在一种数据资源有多版本情况下)

2.4 数据即是资源,均使用名词(可复数)

  • 接口一般都是完成前后台数据的交互,交互的数据我们称之为资源

    • https://api.baidu.com/users
    • https://api.baidu.com/books
    • https://api.baidu.com/book

    注:资源名都是名词,尽量避免使用动词,错误示范:https://api.baidu.com/delete-user

  • 特殊的接口可以出现动词,因为这些接口一般没有一个明确的资源,或是动词就是接口的核心含义

    • https://api.baidu.com/place/search
    • https://api.baidu.com/login

2.5 资源操作由请求方式决定(method)

  • 操作资源一般都会涉及到增删改查,我们提供请求方式来标识增删改查动作
    • 获取资源用get
    • 新增资源用post
    • 修改资源使用put
    • 删除资源使用delete
https://api.baidu.com/books     - get请求:获取所有书

https://api.baidu.com/books/1   - get请求:获取主键为1的书

https://api.baidu.com/books     - post请求:新增一本书书

https://api.baidu.com/books/1   - put请求:整体修改主键为1的书

https://api.baidu.com/books/1   - patch请求:局部修改主键为1的书

https://api.baidu.com/books/1   - delete请求:删除主键为1的书
​

2.6 url中带搜索或过滤条件​​​​​​​

https://api.example.com/v1/zoos?name=猴子   get请求

2.7 响应状态码

  • 2.7.1 正常响应
    • 响应状态码2xx
      • 200:常规请求
      • 201:创建成功
  • 2.7.2 重定向响应
    • 响应状态码3xx
      • 301:永久重定向
      • 302:暂时重定向
  • 2.7.3 客户端异常
    • 响应状态码4xx
      • 403:请求无权限
      • 404:请求路径不存在
      • 405:请求方法不存在
  • 2.7.4 服务器异常
    • 响应状态码5xx
      • 500:服务器异常

2.8 返回中带错误信息

{code:100,msg:成功}
"Message": "send success",

2.9 返回结果,符合以下规范

GET /collection: 返回资源对象的列表(数组)
GET /collection/resource: 返回单个资源对象
POST /collection: 返回新生成的资源对象
PUT /collection/resource: 返回完整的资源对象
PATCH /collection/resource: 返回完整的资源对象
DELETE /collection/resource:返回一个空文档

2.10 返回数据中带url链接

"url": "http://blog.sina.com.cn/zaku",

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1330232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

助力硬件测试工程师之EMC项目测试。

1:更新该系列的目的 接下来的一个月内,将更新硬件测试工程师的其中测试项目--EMC项目,后续将会出安规等项目,助力测试工程师的学习。 2:如何高效率的展现项目的基础以及一些细节知识点 通过思维导图以及标准的规定进行…

【ubuntu 22.04】安装中文版系统、中文语言包和中文输入法

在系统安装中的键盘布局选择时,选择Chinese - Chinese,此时会自动安装所有的中文语言包和ibus中文输入法系统安装成功重启后,点击设置 - 区域和语言 - 管理已安装的语言 * 根据提示安装更新后,将汉语(中国)…

蚂蚁集团5大开源项目获开放原子 “2023快速成长开源项目”

12月16日,在开放原子开源基金会主办的“2023开放原子开发者大会”上,蚂蚁集团主导开源的图数据库TuGraph、时序数据库CeresDB、隐私计算框架隐语SecretFlow、前端框架OpenSumi、数据域大模型开源框架DB-GPT入选“2023快速成长开源项目”。 (图…

simulink代码生成(一)——环境搭建

一、安装C2000的嵌入式环境; 点击matlab附加功能, 然后搜索C2000,安装嵌入式硬件支持包;点击安装即可;(目前还不知道破解版的怎么操作,目前我用的是正版的这样,完全破解的可能操作…

LeetCode刷题--- 目标和

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述递归递归、搜…

常用单片机认识

单片机有哪些类型: 51单片机 AVR 单片机 MSP430 STM8 STM32 DSP Linux FPGA

pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称及pip安装

问题原因 通常出现这种情况是因为cmd(终端)无法识别pip指令,环境变量中缺失pip程序路径,因此需要手动将pip所在路径添加到环境变量 确保环境中包含pip 通常情况下,配置的环境中都会默认包含pip,本文采用…

STM32的以太网外设+PHY(LAN8720)使用详解(6):以太网数据接收及发送

0 工具准备 1.野火 stm32f407霸天虎开发板 2.LAN8720数据手册 3.STM32F4xx中文参考手册1 以太网数据接收及发送 1.1 以太网数据接收(轮询) 1.1.1 检查是否接收到一帧完整报文 使用轮询的方式接收以太网数据是一种简单但是效率低下的方法,…

(十七)Flask之大型项目目录结构示例【二扣蓝图】

大型项目目录结构: 问题引入: 在上篇文章讲蓝图的时候我给了一个demo项目,其中templates和static都各自只有一个,这就意味着所有app的模板和静态文件都放在了一起,如果项目比较大的话,这就非常乱&#xf…

力扣面试经典题之二叉树

104. 二叉树的最大深度 简单 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入&#xf…

vp与vs联合开发-网口通信(socket)

Socket通信是一种在网络中进行进程间通信的机制。它使用了一种称为套接字(Socket)的编程接口,通过该接口可以创建、连接、发送和接收数据等操作。 Socket通信中,有两个主要的角色:服务器和客户端。服务器负责监听指定…

【单调栈】LeetCode:2818操作使得分最大

作者推荐 map|动态规划|单调栈|LeetCode975:奇偶跳 涉及知识点 单调栈 题目 给你一个长度为 n 的正整数数组 nums 和一个整数 k 。 一开始,你的分数为 1 。你可以进行以下操作至多 k 次,目标是使你的分数最大: 选择一个之前没有选过的 非…

基于Springboot的酒店管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的酒店管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

阅读笔记-A Cluster Separation Measure

A Cluster Separation Measure(一种聚类分离测度) 1.这篇论文要解决什么问题?要验证一个什么科学假设? 问题是确定数据中聚类的适当数量,解决这种问题的两种方法都取决于确定指数中相对较大的变化,而不是…

免费PHP完美运营的最新短视频打赏系统学习版

免费PHP完美运营的最新短视频打赏系统学习版 一、介绍 免费PHP完美运营的最新短视频打赏系统学习版,是一款基于PHP开发的打赏系统,具有强大的功能和稳定的性能。相比于市面上的其他打赏系统,它更加完善,几乎无bug,能…

Socket.D 基于消息的响应式应用层网络协议

首先根据 Socket.D 官网 的副标题,Socket.D 的自我定义是: 基于事件和语义消息流的网络应用协议。官网定义的特点是: 基于事件,每个消息都可事件路由所谓语义,通过元信息进行语义描述流关联性,有相关的消…

《数字图像处理-OpenCV/Python》连载:图像的阈值处理

《数字图像处理-OpenCV/Python》连载:图像的阈值处理 本书京东 优惠购书链接 https://item.jd.com/14098452.html 本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html 第 9 章 图像的阈值处理 图像的阈值处理简单、直观,计算…

ES-mapping

类似数据库中的表结构定义,主要作用如下 定义Index下的字段名( Field Name) 定义字段的类型,比如数值型、字符串型、布尔型等定义倒排索引相关的配置,比如是否索引、记录 position 等 index_options 用于控制倒排索记录的内容,有如…

【PWN学习】cannary绕过方式汇总

背景 利用cannary解题在现在的CTF比赛中似乎已经过时了,只是为了学习了解一下。 绕过的4种方式 目前我了解到的方式主要有以下4种 forksspstack_chk_failTLS canary attack fork 每次进程重启后的Canary是不同的,但是同一个进程中的Canary都是一样…

探秘JDK 10:崭新特性悉数解析

欢迎来到我的博客,代码的世界里,每一行都是一个故事 探秘JDK 10:崭新特性悉数解析 前言局部变量类型推断(var关键字)线程本地握手背景和用途:如何使用:优势: 改进的option集合工厂方法List.of() 方法&#…