API接口开发其实特简单,Python FastApi Web 框架教程来了
文章目录
- 技术交流、源码分享
- 一、FastApi??
- 1.FastAPI可以做什么
- 2.为什么要学习 FastAPI
- 二、准备工作
- 1.编译器工具
- 2.python安装教程
- 3.pycharm安装教程
- 4.安装虚拟环境
- 1、创建项目工程
- 2、安装环境
- 3、安装fastapi
- 三、教程
- 1.开启服务和接口访问
- 2.json数据
- 3.api文档在线生成
- 4.发送请求
- 5.获取URL参数
- 6.获取请求头参数
- 7.表单获取数据
- 8.自定义返回JSON信息
- 8.自定义返回HTML
- 9.自定义返回文件
- 10.自定义返回HTML页面
- 11.代办事项小案例
- 12.绑定数据库
- 13.数据库访问
- 14.数据库写入
技术交流、源码分享
目前群友已超过3000人,添加时最好的备注方式为:来源+兴趣方向,技术交流、核心代码分享都搞定。
方式①、添加微信号:dkl88191,备注:来自CSDN+FastApi
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:FastApi
一、FastApi??
1.FastAPI可以做什么
它由 Sebastian Ramirez 开发
- 开发网站
- 开发 web API
- 做一个测试平台
- 做一个持续集成工具
- 生成文档
2.为什么要学习 FastAPI
- FastAPI的使用方法和设计参考了几十个 python 明星项目 博采众长 吸收各家精华
- FastAPI和Flask一样简约
- FastAPI非常新 并且基于python3.6的类型声明系统
- 自动生成文档
- 类型声明和数据检验
- 内置身份认证
- 性能强
- 原生支持异步
- 强大的依赖注入系统
- GraphQL和WebSocket支持
二、准备工作
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 uvicorn
from fastapi import FastAPIapp=FastAPI()if __name__ == '__main__':uvicorn.run(app)
服务器运行
添加接口
main
import uvicorn
from 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 uvicorn
from fastapi import FastAPIapp=FastAPI()@app.get("/user/{id}")
def user(id):return {"id":id}if __name__ == '__main__':uvicorn.run(app)
6.获取请求头参数
main.py
import uvicorn
from 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-multipart
main.py
import uvicorn
from 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 uvicorn
from fastapi import FastAPI
from 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 uvicorn
from fastapi import FastAPI
from 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 uvicorn
from fastapi import FastAPI
from fastapi.responses import JSONResponse,HTMLResponse
from 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 uvicorn
from fastapi import FastAPI,Request
from 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 uvicorn
from fastapi import FastAPI, Request, Form
from fastapi.responses import RedirectResponse
from starlette.templating import Jinja2Templates
from 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
API接口开发其实特简单,Python FastApi Web 框架教程来了相关推荐
- API接口开发其实特简单,Python Flask Web 框架教程来了
大家好,日常工作中,无论你是数据工程师.数据挖掘工程师,甚至数据分析人员,都不可避免的与他人进行数据交互,API接口提供数据是最常见的形式. 今天我给大家分享 Python Flask Web 框架教 ...
- 还在学Django! FastAPI Web 框架教程来了!
点击上方"菜鸟学Python",选择"星标"公众号 超级无敌干货,第一时间送达!!! 大家好,我是菜鸟哥! 都说学Python web开发有三驾马车,其中Dja ...
- Python Flask Web框架教程 1 Hellow, World!
原文 Installing Python 如果你的计算机上没有安装Python,请立即安装.如果你的操作系统没有为你提供Python包,你可以从Python官方网站下载安装程序.如果你将Microso ...
- python写web自动化_Web接口开发与自动化测试——基于Python语言
目 录∣ V 目 录 第1 章 Python 学习必知 ........................................................................ ...
- jemeter python接口自动化测试平台_WEB接口开发与自动化测试基于PYTHON语言PDF_Python教程...
资源名称:WEB接口开发与自动化测试 基于PYTHON语言 PDF 内容简介: <Web接口开发与自动化测试--基于Python语言>以接口测试为主线,以Web开发为切入点,全面介绍了We ...
- YesApi-超强的API接口开发神器
YesApi 是一个免费.简单又好用的API低代码开发平台.定位:YesApi = API开发 + API测试 + API文档 + API调用 + API后端,让你用一个账号,就能轻松搞定API接口开 ...
- 为什么需要API接口开发?
API网关是提供服务开放和共享的企业级PaaS平台,提供发布管理.统一认证鉴权.流控.协议转换.服务审计等功能,帮助用户实现内部多系统间,或者内部系统与外部系统之间实现跨系统.跨协议的服务能力互通. ...
- 一款基于 Java 的可视化 HTTP API 接口开发神器
今天推荐的 5 个项目是: magic-api :一款基于 Java 的可视化 HTTP API 接口开发神器. LanguageTool : 一款基于 Java 语言编写的开源语言校正工具. toB ...
- python接口自动化测试书籍_Web接口开发与自动化测试——基于Python语言
Web接口开发与自动化测试--基于Python语言电子书 本书特色: * Django Web发,通过发发布会签到系统,全面了解Django MTV模型. * Django单元测试,在Web应用中如何 ...
最新文章
- 医学图像分类_TauMed:医学诊断领域中的图像分类测试数据扩增
- python笔记本-如何用Python在笔记本电脑上分析100GB数据(上)
- python线下课程厦门_厦门python课程
- LDAP----manage-account
- 51 -leetcode 38 -字符串
- ACM-ICPC常用模板更新
- ubuntu16.04装机7:安装VScode
- 梦工厂将在红帽峰会畅谈云计算心得
- U盘启动制作 + xp镜像
- Confusing Problem
- 青岛科技大学计算机学院官网,青岛科技大学
- win10系统ipv6服务器地址,win10系统查看电脑ipv6地址的操作方法
- 一个有趣的字符滚动GIF动态验证码识别
- word2vec的词向量神经网络的embedding层的关系
- 《大规模元搜索引擎技(1)》一第1章 绪言
- Mysql的utf8与utf8mb4区别,utf8mb4_bin、utf8mb4_general_ci、utf8mb4_unicode_ci区别
- numpy 数组扩充维度
- 剑灵显示服务器延迟怎么看,windows7电脑如何查看剑灵延迟
- 八荣八耻(超强暴笑豪华版)
- 安卓开发-基础知识补习12
热门文章
- 基于matlab的三体运动模拟
- Figures now render in the Plots pane by default.
- Python之路 - Python基础1
- unity3d 气泡效果_Unity粒子特效插件打造冰与水物语
- 什么软件可以测试抖音文案,寻找抖音热门文案其实很简单
- 支付宝支付成功异步回调验签以及注意事项(附源码)
- 如何分析网站服务器日志,小白必看,如何通过查看网站日志分析数据?
- 【附源码】计算机毕业设计SSM烹饪课程预约系统
- Keil编译出错:“no source“: Warning: #2774-D: ‘=‘ assumed following macro name “USE_STDPERIPH_DRIVER“ in
- 开发岗对三种类型公司的小结