15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > API 接口开发没那么难,Python FastApi Web 框架教程来了!

API 接口开发没那么难,Python FastApi Web 框架教程来了!

时间:2023-05-27 12:00:01 | 来源:网站运营

时间:2023-05-27 12:00:01 来源:网站运营

API 接口开发没那么难,Python FastApi Web 框架教程来了!:
欢迎关注 @Python与数据挖掘 ,专注 Python、数据分析、数据挖掘、好玩工具!
大家好,前几天分享了一篇文章:API接口开发其实特简单,Python Flask Web 框架教程来了

有粉丝朋友就私信,是否可以讲一下FastAPI,今天我就来分享一下如何使用 FastApi ,喜欢记得收藏、点赞、关注。

一、FastApi

1.FastAPI可以做什么

它由 Sebastian Ramirez 开发

2.为什么要学习 FastAPI

二、准备工作

1.编译器工具

Python、Pycharm

2.python安装教程

https://www.runoob.com/python/python-install.html

3.pycharm安装教程

runoob.com/w3cnote/pycharm-windows-install.html

4.安装虚拟环境

1、创建项目工程

2、安装环境

3、安装fastapi

三、教程

1.开启服务和接口访问

main.py

import uvicornfrom fastapi import FastAPIapp=FastAPI()if __name__ == '__main__': uvicorn.run(app)服务器运行

添加接口

main

import uvicornfrom fastapi import FastAPIapp=FastAPI()# 添加首页@app.get("/")def index(): return "This is Home Page."if __name__ == '__main__': uvicorn.run(app)重新运行项目


2.json数据

重新项目

json数据格式解析

https://www.json.cn/

3.api文档在线生成


文档解析


文档备注信息

4.发送请求

POST请求

使用ApiPost接口测试工具来访问接口

定义多种请求格式

5.获取URL参数







main.py

import uvicornfrom fastapi import FastAPIapp=FastAPI()@app.get("/user/{id}")def user(id): return {"id":id}if __name__ == '__main__': uvicorn.run(app)

6.获取请求头参数

main.py

import uvicornfrom fastapi import FastAPI,Headerapp=FastAPI()@app.get("/user")def user(id, token=Header(None)): return {"id":id,"token":token}if __name__ == '__main__': uvicorn.run(app)

7.表单获取数据

安装包

python-multipartmain.py

import uvicornfrom fastapi import FastAPI,Header,Formapp=FastAPI()@app.get("/user")def user(id, token=Header(None)): return {"id":id,"token":token}@app.post("/login")def login(username=Form(None),password=Form(None)): return {"data":{"username":username,"password":password}}if __name__ == '__main__': uvicorn.run(app)

8.自定义返回JSON信息

main.py

import uvicornfrom fastapi import FastAPIfrom fastapi.responses import JSONResponseapp=FastAPI()@app.get("/user")def user(): return JSONResponse(content={"msg":"get user"}, status_code=202, headers={"a":"b"})if __name__ == '__main__': uvicorn.run(app)

8.自定义返回HTML




main.py

import uvicornfrom fastapi import FastAPIfrom fastapi.responses import JSONResponse,HTMLResponseapp=FastAPI()@app.get("/user")def user(): return JSONResponse(content={"msg":"get user"}, status_code=202, headers={"a":"b"})@app.get("/")def user(): html_content=""" <html> <body><p style="color:red">Hello World</p></body> </html> """ return HTMLResponse(content=html_content)if __name__ == '__main__': uvicorn.run(app)

9.自定义返回文件







main.py

import uvicornfrom fastapi import FastAPIfrom fastapi.responses import JSONResponse,HTMLResponsefrom starlette.responses import FileResponseapp=FastAPI()@app.get("/user")def user(): return JSONResponse(content={"msg":"get user"}, status_code=202, headers={"a":"b"})@app.get("/")def user(): html_content=""" <html> <body><p style="color:red">Hello World</p></body> </html> """ return HTMLResponse(content=html_content)@app.get("/avatar")def user(): avatar='./static/violet.jpg' return FileResponse(avatar)if __name__ == '__main__': uvicorn.run(app)

10.自定义返回HTML页面

main.py

import uvicornfrom fastapi import FastAPI,Requestfrom fastapi.templating import Jinja2Templatesapp=FastAPI()template=Jinja2Templates("pages")@app.get("/")def user(req:Request): return template.TemplateResponse("index.html",context={"request":req})if __name__ == '__main__': uvicorn.run(app)返回结果




11.代办事项小案例

main.py

index.html

运行项目

main.py

index.html

运行项目

12.绑定数据库

安装 tortoise-orm

安装 aiomysql

main.py


13.数据库访问

models.py

from tortoise import Model,fieldsclass Todo(Model): id=fields.IntField(pk=True) content=fields.CharField(max_length=500) create_at=fields.DatetimeField(auto_now_add=True) updated_at=fields.DatetimeField(auto_now=True)main.py

import uvicornfrom fastapi import FastAPI, Request, Formfrom fastapi.responses import RedirectResponsefrom starlette.templating import Jinja2Templatesfrom tortoise.contrib.fastapi import register_tortoisefrom dao.models import Todoapp=FastAPI()template=Jinja2Templates("pages")# 数据库绑定register_tortoise(app,db_url="mysql://root:123456@localhost:3306/fastapi", modules={"models":['dao.models']}, add_exception_handlers=True, generate_schemas=True)todos = ["写日记", "看电影", "玩游戏"]# 添加首页@app.get("/")async def user(req:Request): todos=await Todo.all() print(todos) return template.TemplateResponse("index.html",context={"request":req,"todos":todos})@app.post("/todo")def todo(todo=Form(None)): todos.insert(0,todo) return RedirectResponse("/",status_code=302)if __name__ == '__main__': uvicorn.run(app)运行项目


14.数据库写入

main.py

运行项目

数据库里就多了个字段

此时就是显示有问题

index.html

技术交流群

建了技术交流群!想要进交流群、获取资料、岗位推荐的同学,可以直接加微信号:dkl88191。加的时候备注一下:研究方向 +学校/公司+本站,即可。然后就可以拉你进群了。

强烈推荐大家关注 Python与数据挖掘 本站账号和 Python学习与数据挖掘 微信公众号,可以快速了解到最新优质文章。

技术交流、求职内推、干货汇总、与 5000+来自百度、阿里、头条、腾讯等名企开发者互动交流~

文章推荐

盘点10个让工作效率倍增且有趣的 Python库!

prettytable:一款可完美格式化输出的 Python 库

推荐收藏!机器学习建模调参方法总结!

推荐收藏!23个机器学习最佳入门项目(附源代码)

没看完这11 条,别说你精通 Python 装饰器!

60个 VS Code 神级插件,助力打造最强代码编辑器!

太实用了!Schedule模块, Python 周期任务神器!

这4款数据自动化探索 Python 神器,解决99%的数据分析问题!

20个数据分析师必会的数据模型,建议收藏!

真香啊!让 Python 编程起飞的 24 个神操作!

深度盘点:30个用于深度学习、自然语言处理和计算机视觉的顶级 Python

全网超详细!用户画像标签体系建设指南!

机器学习模型验证,这3个 Python 包可轻松解决95%的需求!

精选 30 个炫酷的可视化大屏模板,拿走就用!

够强大!Python 这款可视化大屏不足百行代码!

深度盘点:8000字详细介绍 Python 中的 7 种交叉验证方法

关键词:教程

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭