Skip to content

下载安装

后续的案例教程,我选择的是标准下载:

bash
# 标准下载
pip install fastapi==0.103.1

# 全量下载
pip install fastapi[all]==0.103.1

全量下载,就是比标准下载额外多下载了一些包,比如,全量下载会同时下载jinja2。

下面分别是Windows系统中,标准下载和全量下载的模块。

标准下载

bash
(e1) D:\mydata\tmp\dist>pip list
Package           Version
----------------- -------
annotated-types   0.5.0
anyio             3.7.1
exceptiongroup    1.1.3
fastapi           0.103.1
idna              3.4
pip               23.2.1
pydantic          2.4.2
pydantic_core     2.10.1
setuptools        68.1.2
sniffio           1.3.0
starlette         0.27.0
typing_extensions 4.8.0
wheel             0.41.2

全量下载

bash
(e2) D:\mydata\tmp\dist>pip list
Package              Version
-------------------- -----------
annotated-types      0.5.0
anyio                3.7.1
certifi              2023.7.22
click                8.1.7
colorama             0.4.6
dnspython            2.4.2
email-validator      2.0.0.post2
exceptiongroup       1.1.3
fastapi              0.103.1
h11                  0.14.0
httpcore             0.18.0
httptools            0.6.0
httpx                0.25.0
idna                 3.4
itsdangerous         2.1.2
Jinja2               3.1.2
MarkupSafe           2.1.3
orjson               3.9.7
pip                  23.2.1
pydantic             2.4.2
pydantic_core        2.10.1
pydantic-extra-types 2.1.0
pydantic-settings    2.0.3
python-dotenv        1.0.0
python-multipart     0.0.6
PyYAML               6.0.1
setuptools           68.1.2
sniffio              1.3.0
starlette            0.27.0
typing_extensions    4.8.0
ujson                5.8.0
uvicorn              0.23.2
watchfiles           0.20.0
websockets           11.0.3
wheel                0.41.2

启动fastapi程序的三种方式

我的项目结构 是这样的:

bash
D:\code\myfastapi		# 项目根目录
└── manage.py			# 项目主文件,也是入口文件

通过命令行启动

manage.py文件内容长这样:

python
from fastapi import FastAPI

app = FastAPI()


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


@app.get("/hello/{name}")
async def say_hello(name: str):
    return {"message": f"Hello {name}"}

然后,我们打开终端,到项目根目录下,也就是manage.py文件的同级目录下,执行终端命令启动项目:

bash
(fastapi) D:\code\myfastapi>uvicorn manage:app --host="127.0.0.1" --port=5200 --reload

# uvicorn 是启动命令
# manage:app 表示启动manage.py文件中的app实例
# --host和--port是指定IP和端口
# --reload是代码更改后自动重载

1832669738413588480.png

通过uvicorn配置在文件中启动

如果你不想在命令行写启动命令,我们可以调整manage.py中的代码,使其直接运行文件就能启动项目。

python
import uvicorn  # 首先要导入uvicorn模块
from os import cpu_count
from fastapi import FastAPI

app = FastAPI()


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


@app.get("/hello/{name}")
async def say_hello(name: str):
    return {"message": f"Hello {name}"}


if __name__ == '__main__':
    # 通过run方法启动项目
    uvicorn.run(
        'manage:app',
        host='127.0.0.1',
        port=5200,
        reload=True,
        # workers=cpu_count()  # 可以指定启动时,使用的进程数量,cpu_count用来获取当前计算机的逻辑核心数
    )

然后,你就可以右键运行这个项目了。

1832669739004985344.png

pycharm配置fastapi启动

如果你的ide是pycharm专业版,这里也可以配置fastapi的启动配置。

首先manage.py中用到的代码:

python
from fastapi import FastAPI

app = FastAPI()


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


@app.get("/hello/{name}")
async def say_hello(name: str):
    return {"message": f"Hello {name}"}

1. 打开配置窗口

1832669739764154368.png

1832669740145836032.png

2. 进行配置

1832669740519129088.png

3. 启动

1832669741366378496.png

1832669742003912704.png

查询参数和路径参数

docs和redocs

docs和redocs