FastAPI 快速入门

FastAPI 快速入门

文章目录

  • FastAPI 快速入门
  • 前言
    • 一、FastApi??
      • 1.FastAPI可以做什么
      • 2.为什么要学习 FastAPI
    • 二、准备工作
      • 1.✨编译器工具
      • 2.python安装教程
      • 3.pycharm安装教程
      • 4.安装虚拟环境
    • 三、
      • 1.开启服务和接口访问
      • 2.json数据
      • 3.api文档在线生成
      • 4.发送请求
      • 5.获取URL参数
      • 6.获取请求头参数
      • 7.表单获取数据
      • 8.自定义返回JSON信息
      • 8.自定义返回HTML
      • 9.自定义返回文件
      • 10.自定义返回HTML页面
      • 11.代办事项小案例
      • 12.绑定数据库
      • 13.数据库访问
      • 14.数据库写入


前言

提示:
面向有一丢丢后端基础的
文章为个人学习心得 如有冒犯 call me!
快点做!!!!**


一、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.安装虚拟环境

创建项目工程
FastAPI 快速入门_第1张图片
安装环境
FastAPI 快速入门_第2张图片
安装fastapi
FastAPI 快速入门_第3张图片

三、

1.开启服务和接口访问

main.py

import uvicorn
from fastapi import FastAPI

app=FastAPI()

if __name__ == '__main__':
    uvicorn.run(app)

FastAPI 快速入门_第4张图片
服务器运行
FastAPI 快速入门_第5张图片
--------连--------接--------线----
FastAPI 快速入门_第6张图片
添加接口
FastAPI 快速入门_第7张图片
main

import uvicorn
from fastapi import FastAPI

app=FastAPI()

# 添加首页
@app.get("/")
def index():
    return "This is Home Page."

if __name__ == '__main__':
    uvicorn.run(app)

重新运行项目
FastAPI 快速入门_第8张图片
--------连--------接--------线----
在这里插入图片描述

2.json数据

FastAPI 快速入门_第9张图片
重新项目
在这里插入图片描述
json数据格式解析

https://www.json.cn/

FastAPI 快速入门_第10张图片

3.api文档在线生成

FastAPI 快速入门_第11张图片
文档解析
FastAPI 快速入门_第12张图片
文档备注信息
FastAPI 快速入门_第13张图片

FastAPI 快速入门_第14张图片

4.发送请求

POST请求
FastAPI 快速入门_第15张图片
使用ApiPost接口测试工具来访问接口
FastAPI 快速入门_第16张图片
FastAPI 快速入门_第17张图片
定义多种请求格式
FastAPI 快速入门_第18张图片

5.获取URL参数

FastAPI 快速入门_第19张图片
FastAPI 快速入门_第20张图片
main.py

import uvicorn
from fastapi import FastAPI

app=FastAPI()



@app.get("/user/{id}")
def user(id):
    return {"id":id}

if __name__ == '__main__':
    uvicorn.run(app)

6.获取请求头参数

FastAPI 快速入门_第21张图片
--------连--------接--------线----
FastAPI 快速入门_第22张图片
main.py

import uvicorn
from fastapi import FastAPI,Header

app=FastAPI()


@app.get("/user")
def user(id, token=Header(None)):
    return {"id":id,"token":token}

if __name__ == '__main__':
    uvicorn.run(app)

7.表单获取数据

安装包

python-multipart

FastAPI 快速入门_第23张图片
FastAPI 快速入门_第24张图片
main.py

import uvicorn
from fastapi import FastAPI,Header,Form

app=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信息

FastAPI 快速入门_第25张图片
main.py

import uvicorn
from fastapi import FastAPI
from fastapi.responses import JSONResponse

app=FastAPI()


@app.get("/user")
def user():
    return JSONResponse(content={"msg":"get user"},
                        status_code=202,
                        headers={"a":"b"})

if __name__ == '__main__':
    uvicorn.run(app)

FastAPI 快速入门_第26张图片
FastAPI 快速入门_第27张图片

8.自定义返回HTML

FastAPI 快速入门_第28张图片
在这里插入图片描述
main.py

import uvicorn
from fastapi import FastAPI
from fastapi.responses import JSONResponse,HTMLResponse

app=FastAPI()


@app.get("/user")
def user():
    return JSONResponse(content={"msg":"get user"},
                        status_code=202,
                        headers={"a":"b"})


@app.get("/")
def user():
    html_content="""
    
        

">Hello World

"
"" return HTMLResponse(content=html_content) if __name__ == '__main__': uvicorn.run(app)

9.自定义返回文件

FastAPI 快速入门_第29张图片
FastAPI 快速入门_第30张图片
main.py

import uvicorn
from fastapi import FastAPI
from fastapi.responses import JSONResponse,HTMLResponse
from starlette.responses import FileResponse

app=FastAPI()


@app.get("/user")
def user():
    return JSONResponse(content={"msg":"get user"},
                        status_code=202,
                        headers={"a":"b"})


@app.get("/")
def user():
    html_content="""
    
        

">Hello World

"
"" 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页面

FastAPI 快速入门_第31张图片
FastAPI 快速入门_第32张图片
FastAPI 快速入门_第33张图片
main.py

import uvicorn
from fastapi import FastAPI,Request
from fastapi.templating import Jinja2Templates

app=FastAPI()
template=Jinja2Templates("pages")

@app.get("/")
def user(req:Request):
    return template.TemplateResponse("index.html",context={"request":req})


if __name__ == '__main__':
    uvicorn.run(app)

返回结果
FastAPI 快速入门_第34张图片
FastAPI 快速入门_第35张图片
FastAPI 快速入门_第36张图片
FastAPI 快速入门_第37张图片

11.代办事项小案例

main.py
FastAPI 快速入门_第38张图片
index.html
FastAPI 快速入门_第39张图片
运行项目
FastAPI 快速入门_第40张图片
main.py
FastAPI 快速入门_第41张图片
index.html
FastAPI 快速入门_第42张图片
运行项目
FastAPI 快速入门_第43张图片

12.绑定数据库

安装 tortoise-orm
FastAPI 快速入门_第44张图片
安装 aiomysql
FastAPI 快速入门_第45张图片

main.py
FastAPI 快速入门_第46张图片

13.数据库访问

FastAPI 快速入门_第47张图片
models.py

from tortoise import Model,fields

class 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)

FastAPI 快速入门_第48张图片
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_tortoise

from dao.models import Todo

app=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)

运行项目
FastAPI 快速入门_第49张图片

14.数据库写入

main.py
FastAPI 快速入门_第50张图片
运行项目
FastAPI 快速入门_第51张图片
数据库里就多了个字段
FastAPI 快速入门_第52张图片
此时就是显示有问题
FastAPI 快速入门_第53张图片
index.html
FastAPI 快速入门_第54张图片
FastAPI 快速入门_第55张图片

你可能感兴趣的