fastapi基础篇

简介: fastapi基础篇

简介

FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。

关键特性

快速:可与 NodeJS 和 Go 并肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。

高效编码:提高功能开发速度约 200% 至 300%。*

更少 bug:减少约 40% 的人为(开发者)导致错误。*

智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。

简单:设计的易于使用和学习,阅读文档的时间更短。

简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。

健壮:生产可用级别的代码。还有自动生成的交互式文档。

标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。

环境搭建

安装

pip install fastapi[all]

基础文件

main.py

from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
    return {"coleak"}
@app.get("/hello/{name}")
async def say_hello(name: str):
    return {"message": f"Hello {name}"}

使用上面的方式需要使用搭建时的fastapiproject运行配置才可以,或者直接使用下面的方式一样的

from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/")
async def root():
    """这里是首页"""
    return {"coleak"}
@app.get("/hello/{name}")
async def say_hello(name: str):
    return {"message": f"Hello {name}"}
if __name__ == '__main__':
    uvicorn.run(app)

test_main.http

# Test your FastAPI endpoints
GET http://127.0.0.1:8000/
Accept: application/json
###
GET http://127.0.0.1:8000/hello/User
Accept: application/json
###

自动文档

redoc
docs

基础使用

POST请求

# @app.post("/login")
# def login():
#     return {"message":"successful"}
@app.api_route("/login", methods=["GET", "POST"])
def login():
    return {"message": "successful"}

传递参数

@app.get("/hello/{name}")
async def say_hello(name: str):
    return {"message": f"Hello {name}"}
@app.get("/test")
async def say_hello(id: int,token=Header(None)):
    return {"id": id,"token":token}
@app.post("/login")
def login(data=Body(None)):
    return {"data":data}
@app.post("/login")
def login(username=Form(None),passwd=Form(None)):
    return {"data":{"username":username,"passwd":passwd}}
//username=coeleak&passwd=123456

返回定制信息

//返回json
@app.get("/user")
def user():
    return JSONResponse(content={"msg":"getuser"},status_code=233,headers={"a":"b"})
HTTP/1.1 233
Date: Sun, 21 May 2023 04:57:30 GMT
Server: uvicorn
A: b
Content-Length: 17
Content-Type: application/json
{"msg":"getuser"}
//返回HTML
@app.get("/user")
def user():
    html="""
    <html>
    <body>
    <p style="color:red">hello</p>
    </body>
    </html>
    """
    return HTMLResponse(html)
//返回文件
@app.get("/picture")
def picture():
    picture="col.jpg"
    return FileResponse(picture)

jinja2返回html

app = FastAPI()
template = Jinja2Templates("page")
@app.get("/")
def index(req:Request,username):
    return template.TemplateResponse("index.html",context={"request":req,"name":username})
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>fastapi {{name}}</p>
</body>
</html>
:username})
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>fastapi {{name}}</p>
</body>
</html>


目录
相关文章
|
Cloud Native 架构师 测试技术
如何画好一张架构图?(内含知识图谱)
架构图是什么?为什么要画架构图?如何画好架构图?有哪些方法?本文从架构的定义说起,分享了阿里文娱高级技术专家箫逸关于画架构图多年的经验总结,并对抽象这一概念进行了深入地讨论。内容较长,同学们可收藏起来细细阅读。
13679 0
如何画好一张架构图?(内含知识图谱)
|
Java Python Windows
Python pip 源设置成国内源,阿里云源,清华大学源,最方便的方式,都在这里了
Python pip 源设置成国内源,阿里云源,清华大学源,最方便的方式,都在这里了
40499 0
|
JSON 数据格式
FastAPI 学习之路(五十二)WebSockets(八)接受/发送json格式消息
FastAPI 学习之路(五十二)WebSockets(八)接受/发送json格式消息
FastAPI 学习之路(五十二)WebSockets(八)接受/发送json格式消息
|
NoSQL Oracle 关系型数据库
阿里云服务器部署项目流程
连接服务器,准备环境 利用XShell连接远程云服务器,准备Jdk、mysql、tomcat、redis的安装
|
9月前
|
安全 API Python
FastAPI入门指南
FastAPI是基于Python类型提示的高性能Web框架,用于构建现代API。它提供高性能、直观的编码体验,内置自动文档生成(支持OpenAPI)、数据验证和安全特性。安装FastAPI使用`pip install fastapi`,可选`uvicorn`作为服务器。简单示例展示如何定义路由和处理函数。通过Pydantic进行数据验证,`Depends`处理依赖。使用`uvicorn main:app --reload`启动应用。FastAPI简化API开发,适合高效构建API应用。5月更文挑战第21天
264 1
|
PyTorch 算法框架/工具
更换Anaconda的下载源为国内源的办法
更换Anaconda的下载源为国内源的办法
2988 0
|
6月前
|
数据处理 开发者 UED
FastAPI 的模板引擎简直太神奇啦!这就是构建动态 Web 页面的终极秘籍,快来一探究竟!
【8月更文挑战第31天】FastAPI 是一款高性能异步 Web 框架,可通过集成模板引擎(如 Jinja2 或 Mako)实现动态页面渲染。使用模板引擎可分离页面结构与数据,简化代码并提升可维护性。此外,它还提供丰富的语法支持,如循环和条件判断,从而增强页面展示效果及开发效率。通过简单的配置步骤,即可在 FastAPI 中启用模板引擎,显著改善用户体验。
578 1
|
NoSQL Linux 测试技术
docker 安装 yapi
Yapi 由 YMFE 开源,旨在为开发、产品、测试人员提供更优雅的接口管理服务,可以帮助开发者轻松创建、发布、维护 API。
|
负载均衡 测试技术 Go
Sanic教程: 7.测试与部署
Sanic教程: 7.测试与部署
|
5月前
|
网络协议 网络虚拟化
接收网络包的过程——从硬件网卡解析到IP
【9月更文挑战第18天】这段内容详细描述了网络包接收过程中机制。当网络包触发中断后,内核处理完这批网络包,会进入主动轮询模式,持续处理后续到来的包,直至处理间隙返回其他任务,从而减少中断次数,提高处理效率。此机制涉及网卡驱动初始化时注册轮询函数,通过软中断触发后续处理,并逐步深入内核网络协议栈,最终到达TCP层。整个接收流程分为多个层次,包括DMA技术存入Ring Buffer、中断通知CPU、软中断处理、以及进入内核网络协议栈等多个步骤。

热门文章

最新文章