文章目录

  • 技术交流、源码分享
  • 一、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 框架教程来了相关推荐

  1. API接口开发其实特简单,Python Flask Web 框架教程来了

    大家好,日常工作中,无论你是数据工程师.数据挖掘工程师,甚至数据分析人员,都不可避免的与他人进行数据交互,API接口提供数据是最常见的形式. 今天我给大家分享 Python Flask Web 框架教 ...

  2. 还在学Django! FastAPI Web 框架教程来了!

    点击上方"菜鸟学Python",选择"星标"公众号 超级无敌干货,第一时间送达!!! 大家好,我是菜鸟哥! 都说学Python web开发有三驾马车,其中Dja ...

  3. Python Flask Web框架教程 1 Hellow, World!

    原文 Installing Python 如果你的计算机上没有安装Python,请立即安装.如果你的操作系统没有为你提供Python包,你可以从Python官方网站下载安装程序.如果你将Microso ...

  4. python写web自动化_Web接口开发与自动化测试——基于Python语言

    目 录∣ V 目 录 第1 章 Python 学习必知 ........................................................................ ...

  5. jemeter python接口自动化测试平台_WEB接口开发与自动化测试基于PYTHON语言PDF_Python教程...

    资源名称:WEB接口开发与自动化测试 基于PYTHON语言 PDF 内容简介: <Web接口开发与自动化测试--基于Python语言>以接口测试为主线,以Web开发为切入点,全面介绍了We ...

  6. YesApi-超强的API接口开发神器

    YesApi 是一个免费.简单又好用的API低代码开发平台.定位:YesApi = API开发 + API测试 + API文档 + API调用 + API后端,让你用一个账号,就能轻松搞定API接口开 ...

  7. 为什么需要API接口开发?

    API网关是提供服务开放和共享的企业级PaaS平台,提供发布管理.统一认证鉴权.流控.协议转换.服务审计等功能,帮助用户实现内部多系统间,或者内部系统与外部系统之间实现跨系统.跨协议的服务能力互通. ...

  8. 一款基于 Java 的可视化 HTTP API 接口开发神器

    今天推荐的 5 个项目是: magic-api :一款基于 Java 的可视化 HTTP API 接口开发神器. LanguageTool : 一款基于 Java 语言编写的开源语言校正工具. toB ...

  9. python接口自动化测试书籍_Web接口开发与自动化测试——基于Python语言

    Web接口开发与自动化测试--基于Python语言电子书 本书特色: * Django Web发,通过发发布会签到系统,全面了解Django MTV模型. * Django单元测试,在Web应用中如何 ...

最新文章

  1. 医学图像分类_TauMed:医学诊断领域中的图像分类测试数据扩增
  2. python笔记本-如何用Python在笔记本电脑上分析100GB数据(上)
  3. python线下课程厦门_厦门python课程
  4. LDAP----manage-account
  5. 51 -leetcode 38 -字符串
  6. ACM-ICPC常用模板更新
  7. ubuntu16.04装机7:安装VScode
  8. 梦工厂将在红帽峰会畅谈云计算心得
  9. U盘启动制作 + xp镜像
  10. Confusing Problem
  11. 青岛科技大学计算机学院官网,青岛科技大学
  12. win10系统ipv6服务器地址,win10系统查看电脑ipv6地址的操作方法
  13. 一个有趣的字符滚动GIF动态验证码识别
  14. word2vec的词向量神经网络的embedding层的关系
  15. 《大规模元搜索引擎技(1)》一第1章 绪言
  16. Mysql的utf8与utf8mb4区别,utf8mb4_bin、utf8mb4_general_ci、utf8mb4_unicode_ci区别
  17. numpy 数组扩充维度
  18. 剑灵显示服务器延迟怎么看,windows7电脑如何查看剑灵延迟
  19. 八荣八耻(超强暴笑豪华版)
  20. 安卓开发-基础知识补习12

热门文章

  1. 基于matlab的三体运动模拟
  2. Figures now render in the Plots pane by default.
  3. Python之路 - Python基础1
  4. unity3d 气泡效果_Unity粒子特效插件打造冰与水物语
  5. 什么软件可以测试抖音文案,寻找抖音热门文案其实很简单
  6. 支付宝支付成功异步回调验签以及注意事项(附源码)
  7. 如何分析网站服务器日志,小白必看,如何通过查看网站日志分析数据?
  8. 【附源码】计算机毕业设计SSM烹饪课程预约系统
  9. Keil编译出错:“no source“: Warning: #2774-D: ‘=‘ assumed following macro name “USE_STDPERIPH_DRIVER“ in
  10. 开发岗对三种类型公司的小结