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

fastapi学习前置知识点

前置知识点

FastApi:一个用于构建API的现代、快速(高性能)的web框架。

FastApi是建立在Pydantic和Starlette基础上,Pydantic是一个基于Python类型提示来定义数据验证、序列化和文档的库。Starlette是一种轻量级的ASGI框架/工具包,是构建高性能Asyncio服务的理性选择。

Starlette是一个轻量级的ASGI框架/工具包,主要负责web部分(Asyncio)

Pydantic负责数据部分(类型提示)

python版本要在3.7以上

1.1 http协议

1.什么是请求头请求体、响应头响应体

2.URL地址包括什么

3.get请求和post请求是什么

4.Content-Type是什么

1.1.1 简介

http协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网服务器与本地浏览器之间传输超文本的传送协议。http是一个应用层的面向对象的协议,由于其简洁、快速的方式,适用于分布式超媒体信息系统。

浏览器作为http客户端通过URL向http服务端即web服务器发送所有请求,web服务器根据收到的请求,向客户端发送响应信息。

1.1.2 http协议特性

  1. 基于TCP/IP协议

    http协议是基于TCP/IP协议之上的应用层协议

  2. 基于请求-响应模式

    http协议规定,请求从客户端发出,服务器端响应该请求并返回。换句话说就是,先从客户端开始建立通信,服务器端在没有接收到请求之前不会发送响应。

  3. 无状态保存

  4. 短连接

    http1.0默认使用的是短连接,浏览器和服务器每进行一次http操作,就建立一次连接、任务结束就中断连接。

    http1.1起,默认使用长连接,要使用长连接,客户端和服务器的http首部的Connetion都要设置为keep-alive,才能支持长连接。

    http长连接指的是复用tcp连接。多个http请求可以复用同一个tcp连接,这就节省了tcp连接建立和断开的消耗。

1.1.3 http请求协议与响应协议

在这里插入图片描述

  • http请求协议

    在这里插入图片描述

    • 请求首行:

      • 请求方式

        • post

        • get

          将数据放在?后面

          没有请求体

          参数有限

      • 请求路径

      • 请求协议

    • 请求头(键值对)

      • content-type:application/json

        标识请求体,使服务器知道请求体的类型

      • user-agent:Chrome/104.0.0.0 Safari/537.36

    • 请求体

      • 请求头和请求体之间有一个空行,用来隔开请求体和请求头
  • http响应协议

    在这里插入图片描述

    • 响应首行
    • 响应头
    • 响应体

1.2 api接口

  • 前后端不分离
    • 客户端看到的内容和所有界面效果都是由服务端提供出来的
  • 前后端分离(绝大部分项目都是前后端分离)
    • 前端形成一个独立的网站,服务端构成一个独立的网站

应用程序编程接口(Application Programming Interface,API接口),就是应用程序对外提供一个操作数据的入口,这个入口可以是一个函数或类方法,也可以是一个url地址或者一个网络地址。当客户端调用这个入口,应用程序则会执行对应代码操作,给客户端完成相对应的功能。

目前大多数使用的接口实现规范主要是:restful、RPC。

restful是一种专门为web开发而定义API接口的设计风格,尤其适用于前后端分离的应用模式。

关键:面向资源开发

该风格的理念认为后端开发任务就是提供数据的、对外提供的是数据资源的访问接口,所以在定义接口时,客户端访问的url路径就表示这种要操作的数据资源。

对于数据资源分别使用post、delete、get、update等请求动作来表达对数据的增删查改。

相关文章:

  • 前端工程化工具系列(十一)—— Babel(v7.24):JavaScript编译器
  • 多线程详解
  • Redis到底支不支持事务?
  • MySQL 存储函数及调用
  • C语言 | Leetcode C语言题解之第142题环形链表II
  • Position定位
  • 深度学习之文本分类模型-基于transformer
  • Spring Web MVC入门
  • AI服务器相关知识
  • 有趣的数学 为什么绝对值和模都用两个竖线表示?
  • Python with语句
  • 大数据运维学习笔记之flink standalone flink on yarn集群搭建 —— 筑梦之路
  • AI作画工具介绍
  • 容器是什么?
  • 【linux】(6)文本处理sed
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【剑指offer】让抽象问题具体化
  • Android框架之Volley
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • css系列之关于字体的事
  • go语言学习初探(一)
  • Java 23种设计模式 之单例模式 7种实现方式
  • javascript 总结(常用工具类的封装)
  • Protobuf3语言指南
  • 线上 python http server profile 实践
  • 异步
  • postgresql行列转换函数
  • 带你开发类似Pokemon Go的AR游戏
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (007)XHTML文档之标题——h1~h6
  • (1)Nginx简介和安装教程
  • (16)Reactor的测试——响应式Spring的道法术器
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (七)c52学习之旅-中断
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (学习日记)2024.01.09
  • .net 生成二级域名
  • .NET4.0并行计算技术基础(1)
  • .Net接口调试与案例
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • 。。。。。
  • @Autowired @Resource @Qualifier的区别
  • @Autowired多个相同类型bean装配问题
  • [ Python ]使用Charles对Python程序发出的Get与Post请求抓包-解决Python程序报错问题
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
  • [HNCTF 2022 WEEK2]easy_include 文件包含遇上nginx