FastAPI 学习笔记 1

前言

FastAPI: 是一个基于Python的高效的Web框架。


一、FastAPI是什么?

fastapi是高性能的web框架。他的主要特点是:

  • 快速编码
  • 减少人为bug
  • 直观
  • 简易
  • 具有交互式文档
  • 基于API的开放标准(并与之完全兼容):OpenAPI(以前称为Swagger)和JSON Schema。

技术背景:python3.6+、Starlette、Pydantic

官方文档地址:https://fastapi.tiangolo.com/

二、搭建FastAPI

安装模块

1. 基本功能模块:

fastapiuvicorn 以及 python-multipart 三个库。

pip install fastapi
pip install uvicorn
pip install python-multipart

jinjia2: FastAPI可以使用多种模板引擎,常用的是 jinja2 。使用时需要先安装 jinja2 ,然后设置相应的目录。

from starlette.requests import Request
from fastapi import FastAPI
from starlette.templating import Jinja2Templates

app = FastAPI()
# 设置模板所在目录
templates = Jinja2Templates(directory="templates")

@app.get("/")
async def main(request: Request):  # 使用模板需带上 request
    return templates.TemplateResponse('index.html', 
{'request': request, 'hello': 'HI...'})

##########
TemplateResponse 方法的第一个参数就是 模板的路径 ,
在上面的例子中,我们需要建立一个 templates 目录,
在下面建立一个 index.html 的文件;
第二个参数是一个字典 ,包含了 request 请求和一些其他的参数。
##########

aiofiles:如果要使用静态文件,需要先安装 aiofiles ,然后使用 mount 方法来设置静态文件目录。

from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles

app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")

### mount 之后就可以使用 url_for 方法来生成静态文件的链接了,模板中可以使用如下代码:
<link href="{{ url_for('static', path='/css/bootstrap.min.css') }}" rel="stylesheet">

2. 辅助功能模块:

运行FastAPI程序

代码的示例:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

 @app.get("/")功能是定义路径操作,表示通过GET方法访问网站的根路径(默认:http://127.0.0.1:8080/)时执行下面函数所定义的操作,这里支持 GET,POST,DELETE等http方法。@app 是python装饰器的应用,这里意味着要执行下面的函数。

async def 是定义异步函数的方法,定义普通函数直接使用def。如果程序不需要严格按照先后顺序执行函数(如先访问数据库,然后根据查询数据进行特定计算)可以使用异步,否则使用普通函数即可。

执行代码:

将代码保存到main.py文件中,打开cmd,输入 uvicorn main:app --reload, 如下:

# uvicorn python文件名:FastAPI对象名 --reload
uvicorn main:app --reload

 上面命令包括了三个要素:

  • 文件名:比如文件叫做 main.py ,那这里就是 main 。
  • FastAPI对象名:在模块中对应的 FastAPI 的对象名,在本例中就是 app 。
  • --reload:在文件变化后重启服务器,仅用于开发环境。

运行结果:

打开浏览器输入:http://12.0.0.1:8000,即可看到成功返回:

{“message”:"Hello World"}


部署

直接部署:

uvicorm main:app --host 0.0.0.0 --port 8000

持续后台运行:

安装screen模块,或官方推荐的gunicorn

使用自定义域名:

使用宝塔反向代理,启用SSL需要用DNS验证,而不能用文件验证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值