Skip to content

[toc]

服务端开发环境搭建

1 实验类型

验证型,2学时,必选实验

2 实验目的

掌握pip工具安装程序依赖;掌握venv创建虚拟环境;熟悉Uvicorn服务器搭建;

3 实验内容与要求

FastAPI框架为例,使用pipvenvUvicorn等搭建Python Web服务器运行环境。

4 实验环境

Microsoft Edge/Chrome/Firefox等浏览器,Visual Studio CodeREST ClientPython 3.4+FastAPIUvicorn

步骤

安装REST Client扩展

  1. 打开Visual Studio Code并打开扩展视图

  2. 搜索REST Clint扩展并安装

加速Windows下pip工具下载速度

可使用国内镜像网站作为依赖安装源,步骤如下:

  1. C:\Users\{User Name}\AppData\Roaming\目录下创建pip文件夹

  2. 在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运行依赖

  1. 查看当前pip版本
py -m pip --version
  1. 创建工作目录学号,最终目录结构如下(包含创建的各类文件):
学号:.
  index.html
  math_test.http
  my_server.py
└─public
        jquery-3.6.1.min.js
  1. 进入工作目录{WORK_DIR}

  2. 使用venv创建虚拟环境目录.venv

py -m venv .venv
  1. 激活虚拟环境:
.venv\scripts\activate
  1. 安装依赖包:
pip install fastapi
pip install "uvicorn[standard]"
  1. 查看虚拟环境中已安装的依赖名
pip list
  1. 在工作目录下生成当前虚拟环境的依赖列表
py -m pip freeze > requirements.txt

开发算术运算服务

  1. 在工作目录新建{WORK_DIR}\my_server.py

  2. 使用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()
  1. 启动服务
py my_server.py

服务测试

  1. 在工作目录下创建REST Client请求文件math_test.http

  2. 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
  1. 发送请求,观察返回结果