fastapi get
charles map remote和fastapi结合

fastapi


FastAPI是一个用于构建API的现代、快速(高性能)的web框架,更多特性可参看官方文档

官方文档

环境配置

pip install fastapi
pip install uvicorn

python版本要求 Python 3.6+,其中Uvicorn为ASGI服务器,还可以使用Hypercorn

官方示例

# main.py
from typing import Optional
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: Optional[str] = None):
    return {"item_id": item_id, "q": q}

也可使用协程的语法糖async和await

启动服务:

uvicorn main:app --reload

mainmain.py文件(一个 Python "模块")
app:在main.py文件中通过app = FastAPI()创建的对象
--reload:让服务器在更新代码后重新启动,仅在开发时使用该选项

检查:
浏览器访问:http://127.0.0.1:8000/items/5?q=somequery则返回json响应:{"item_id": 5, "q": "somequery"}

api文档

  1. http://127.0.0.1:8000/docs (由Swagger UI生成)
  2. http://127.0.0.1:8000/redoc (由ReDoc生成)

charles map remote和fastapi结合


如某app有一个获取tab数据的接口xxx/sBar,此时我们想测试sbar显示兼容性。当然可用之前在charles使用总结中介绍的map local来实现,使用本地文件,并修改内容为想要的数据结构。

  1. 这里介绍一下map remote的方法,编写如下代码:(这里return的sName就是客户端作为显示的内容)
# main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/sBar")
def get_sbar():
    return {"data": {"columnConfig": [{"sName": "热门热门热门热门热门", "id": 1000}]}, "header": {"vs": "20200520140116"}}
  1. 启动服务
uvicorn main:app --reload
  1. 浏览器打开该地址进行校验是否是需要的数据结构
  2. 在charles中选中需要修改的session,右键选择 - map remote - 填入http://127.0.0.1:8000/sBar
  3. 再次在客户端调用则可进一步对app显示做兼容测试

这里只是作为map remote的演示,这个示例似乎用map local更方便
其实在实际工作中map remote主要用于不同环境的切换