Python Web Dev

FastAPI

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

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)

SQLAlchemy

Asyncio

posted @   ForHHeart  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
点击右上角即可分享
微信分享提示