[toc]
服务端开发环境搭建
1 实验类型
验证型,2学时,必选实验
2 实验目的
掌握pip工具安装程序依赖;掌握venv创建虚拟环境;熟悉Uvicorn服务器搭建;
3 实验内容与要求
以FastAPI框架为例,使用pip,venv,Uvicorn等搭建Python Web服务器运行环境。
4 实验环境
Microsoft Edge/Chrome/Firefox
等浏览器,Visual Studio Code
,REST Client
,Python 3.4+
,FastAPI
,Uvicorn
步骤
安装REST Client
扩展
-
打开Visual Studio Code并打开扩展视图
-
搜索REST Clint扩展并安装
加速Windows下pip工具下载速度
可使用国内镜像网站作为依赖安装源,步骤如下:
-
在
C:\Users\{User Name}\AppData\Roaming\
目录下创建pip文件夹 -
在pip目录下创建pip.ini文件,内容如下:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
use-mirrors =true
mirrors =http://mirrors.aliyun.com/pypi/simple/
trusted-host =mirrors.aliyun.com
安装FastAPI运行依赖
- 查看当前pip版本
- 创建工作目录
学号
,最终目录结构如下(包含创建的各类文件):
-
进入工作目录
{WORK_DIR}
-
使用venv创建虚拟环境目录
.venv
- 激活虚拟环境:
- 安装依赖包:
- 查看虚拟环境中已安装的依赖名
- 在工作目录下生成当前虚拟环境的依赖列表
开发算术运算服务
-
在工作目录新建
{WORK_DIR}\my_server.py
-
使用FastAPI编写如下服务:
服务 | 功能 | 请求方式 | 输入 | 输出 |
---|---|---|---|---|
add | 加法 | POST | a:浮点数,b:浮点数 | a+b:浮点数 |
minus | 减法 | GET | a:浮点数,b:浮点数 | a-b:浮点数 |
参考代码如下:
#my_server.py
import logging
from fastapi import FastAPI
from pydantic import BaseModel
import uvicorn
log = logging.getLogger("my_server")
app = FastAPI()
class AddInput(BaseModel):
'''加法输入'''
a: float = 0
b: float = 0
@app.post("/add")
async def add(v: AddInput):
'''加法服务'''
log.debug("input:{},{}".format(v.a, v.b))
return v.a + v.b
@app.get("/minus")
async def add(a:float, b:float):
'''减法服务'''
log.debug("input:{},{}".format(a, b))
return a - b
def start(port: int = 8888):
'''启动FastAPI服务器'''
config = uvicorn.Config(app = app, port = port, log_level = "info", reload = False)
server = uvicorn.Server(config)
server.run()
if __name__ == "__main__":
logging.basicConfig(level=logging.DEBUG)
start()
- 启动服务
服务测试
-
在工作目录下创建REST Client请求文件
math_test.http
-
为
add
,minus
服务编写请求
@host = http://127.0.0.1:8888
### add服务
POST {{host}}/add HTTP/1.1
content-type: application/json
{
"a": 1.0,
"b": 2.0
}
### minus服务
GET {{host}}/minus?a=3&b=2 HTTP/1.1
- 发送请求,观察返回结果