最近在学习php处理表单的问题的时候想调用接口返回参数,突然想要是能使用python写接口那该有多方便呀!不搜不知道一搜吓一跳,找到个超好用的基于python的web框架——FastAPI

Ⅰ.FastAPI安装下载

前提先安装好宝塔环境,然后在安装python管理插件

随后在版本管理处安装好python版本(至少需要3.6+以上的环境)

安装后pthon之后需要创建一个环境,创建项目文件夹,然后在里面添加一个main.py文件,里面写上:

from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

之后重新打开python管理器的设置,添加一个项目,填写方式如下:

需要注意的是路径为项目的路径,启动文件夹为刚刚创建的main.py文件夹,端口自定(需要注意设定的端口是否被占用)

点击确认,会执行安装程序,如果安装到中途显示找不到requirements.txt,那么在你的项目文件夹创建一个requirements.txt文件再重新安装即可

接下来,我们需要打开linux控制台,进入刚刚创建的项目文件夹,安装fastapi(当然你也可以直接在python项目管理器里面安装模块,但是我在这里必须先让大家理解其项目结构!)

在控制台输入命令进入你的项目位置(比如我的是在 cd /www/wwwroot/ 项目名称 里面),然后输入ls查看你python虚拟环境的名称

最长的那串乱码似的文件夹就是宝塔在你项目给你创建的Python虚拟环境

之后以我的python虚拟环境名,我们在项目文件夹里面执行如下命令:

./0ac432769d04b3ee8b599391dd60b53d_venv/bin/pip install fastapi
./0ac432769d04b3ee8b599391dd60b53d_venv/bin/pip install "uvicorn[standard]"
./0ac432769d04b3ee8b599391dd60b53d_venv/bin/pip freeze > requirements.txt

至此,宝塔面板安装FastAPI完成!

Ⅱ.启动FastAPI并保存运行

首先我们需要创建多一个控制台来保持Python的运行

安装screen

yum install screen

创建新窗口

screen -S 窗口名称

在新窗口运行:(开启服务)

./0ac432769d04b3ee8b599391dd60b53d_venv/bin/uvicorn main:app --reload

之后这个窗口就会持续运行了

最后,我们回到python项目管理器,将我们的域名映射上去,再进去看,是不是就成功返回HelloWorld了!

Ⅲ.小结

使用FastAPI构建web框架真的是非常方便,能让你少写非常多的代码,学习它的用法,你可以参考官方文档,或是我觉得不错的这篇文章~

Ⅳ.其他

Screen的用法:

新建窗口:screen -S 窗口名称/代号

列出所有窗口:screen -ls

重新连接窗口:screen -r 窗口名称/代号(前提是你需要在上一条命令中看到此窗口为 Detached 状态)

退出当前窗口:screen -d (可以让窗口状态变为 Detached)

删除指定的窗口:screen -X -S 窗口名称/代号 quit

requirements.txt 文件解释

requirements.txt这个名字是约定俗成的名字,在宝塔中必须有它才能创建我们的项目,文件中记录着我们项目的文件依赖,当以后我们如果需要在一个新的Python环境中引入当前的依赖,只需要使用 pip install -r requirements.txt 即可