Python Web Dev
FastAPI
FastAPI是站在前人肩膀上,集成了多种框架的优点的新秀框架。它出现的比较晚,2018年底才发布在github上。广泛应用于当前各种前后端分离的项目开发,测试运维自动化以及微服务的场景中。
预备知识点
http协议
1.什么是请求头请求体,响应头响应体
2.URL地址包括什么
3.get请求和post请求到底是什么
4.Content-Type是什么
-
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web)服务器与本地浏览器之间传输超文本的传送协议。
- 超文本:超文本就是指“含有指向其他资源链接”内容的文本。
- 大概就是,不仅仅是文字,还有多媒体:视频、图片、动画等。
- 协议:HTTP协议就是服务器(Server)和客户端(Client)之间进行数据交互(相互传输数据)的一种协议。
- 我们可以将Server和Client进行拟人化,那么该协议就是Server和Client这两兄弟间指定的一种交互沟通方式。
- 超文本:超文本就是指“含有指向其他资源链接”内容的文本。
-
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
- 它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。
- HTTP协议工作于客户端-服务端架构为上。
- 浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
- Web服务器根据接收到的请求后,向客户端发送响应信息。

一个完整的URL包括:协议、ip、端口、路径、参数
例如: https://www.baidu.com/s?wd=yuan 其中https是协议,www.baidu.com 是IP,端口默认80,/s是路径,参数是wd=yuan
请求方式: get与post请求
- GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456.
- POST方法是把提交的数据放在HTTP包的请求体中.
- GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制,且携带的请求数据不可以明文方式连接在url中。
响应状态码:状态码的职责是当客户端向服务器端发送请求时, 返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。状态码如200 OK,以3位数字和原因组成。
Request
Client->Server
Client->Static->(uvicorn)->[Router->Function->Database]
Response
Server->Client
[Database->Function->Router]->(uvicorn)->Static->Client
Request First Row
Method IP Path Query
Request Headers
Content-type
- application/json
- application/x-www-form-uniencoded
Request Body
Parameter
- Path /
- Query
Response First Row
Response Headers
Response Body
from fastapi import FastAPI
from api.student import api_student
app = FastAPI()
app.include_router(api_student, prefix=“student”, tags=[“选课系统的学生接口”])
from fastapi import APIRouter
from pydantic import BaseModel
api_student = APIRouter()
class UserIn(BaseModel):
username: str
description: Optional[str]=None
email: EmailStr
full_name: Optional[str]=None
class UserOut(BaseModel):
username: str
email: EmailStr
full_name: Optional[str]=None
@app.post(“/user”, response_model=UserOut)
async def create_user(user: UserIn)
return {
“user”: user
}
FESTful API principle
get
/student 查看学生列表
post
/student 添加学生
get
/student/1 查看id=1的学生
put
/student/1 更新id=1的学生
delete
/student/1 删除id=1的学生
ORM
ORM(Object Relationship Mapper)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端