1. GET 方法
1.1. 新建一个名为 Test.py
的FastAPI app
#!/usr/bin/env python3
from fastapi import FastAPI
app = FastAPI()
@app.get('/')
def main(parameter:str=None):
return parameter
1.2. 新建一个 uvirun.py
,其中有三个参数:分别用于接收 FastAPI app 名,接口 Host 地址 以及 端口号
#!/usr/bin/env python3
import uvicorn
import sys
appName = sys.argv[1] # 接收app文件名
Host = sys.argv[2]
Port = int(sys.argv[3])
uvicorn.run(appName+":app", host=Host, port=Port, log_level='info', access_log=False)
1.3. 运行 python3 ./uvirun.py Test 127.0.0.1 12345
启动 API
1.4. 访问 ‘http://127.0.0.1:12345/?parameter=Hello World!’, 显示‘Hello World!’, 则证明API创建成功。

2. POST 方法
2.1. 新建一个 Test-post.py
from pydantic import BaseModel
from fastapi import FastAPI
class Student(BaseModel):
Name: str = None
School: str = None
Mark: list = None
app = FastAPI()
@app.post("/student") #自定义 POST 接收地址
async def push(item: Student):
if item.Mark: avgMark = sum(map(int, item.Mark)) / len(item.Mark)
return "%s is a student from %s with the average score of %s"%(item.Name, item.School, avgMark)
2.2. 新建一个 uvirun.py
(和之前Get方法使用的文件一致)
#!/usr/bin/env python3
import uvicorn
import sys
appName = sys.argv[1] # 接收app文件名
Host = sys.argv[2]
Port = int(sys.argv[3])
uvicorn.run(appName+":app", host=Host, port=Port, log_level='info', access_log=False)
2.3. 运行 python3 ./uvirun.py Test-post 127.0.0.1 12345
启动 API
2.4. 对接口进行 POST 请求,返回处理完成的结果
curl -H "Content-Type:application/json" -X POST \
--data '{
"Name": "Wenbo Li",
"School": "University of Sheffield",
"Mark": [78,74,72,72,70,69,66,66,65,65]
}' \
http://127.0.0.1:12345/student

3. 后台运行 API
在命令前加上 nohup
,在最后加上 &
For example:
nohup python3 ./uvirun.py Test-post 127.0.0.1 12345 &
4. 开机启动 (Ubuntu)
在 18.04 之后版本的 Ubuntu 已不再默认使用 rc.loacl 添加启动项,
而是统一使用 systemctl
来协调启动服务。
4.1. 新建一个api启动项的服务文件 /etc/systemd/system/YOUR_SERVICE_NAME.service
4.2. 编辑文件:修改 Description
& 输入启动命令 ExecStart
[Unit]
Description=YOUR SERVICE DESC
[Service]
ExecStart=/usr/bin/python3 /YOUR_FULL_PATH/uvirun.py Test-post 127.0.0.1 12345
ExecReload=
ExecStop=
StandardOutput=tty
[Install]
WantedBy=multi-user.target
4.3. 加载并启动新加入的服务
sudo systemctl daemon-reload
sudo systemctl enable YOUR_SERVICE_NAME.service
sudo systemctl start YOUR_SERVICE_NAME.service
4.4. 检查启动状态
sudo systemctl status YOUR_SERVICE_NAME.service
正常情况下会显示 Active: active (running)
.
4.5. 重启系统后再次检查状态,若无误则启动项设置完成。