fastapi get
charles map remote和fastapi结合
fastapi
FastAPI是一个用于构建API的现代、快速(高性能)的web框架,更多特性可参看官方文档
官方文档
- fastapi 官方中文文档(建议查看以上英文版,中文版翻译有误)
- github 源码
环境配置
pip install fastapi
pip install uvicorn
官方示例
# 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
main
:main.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文档
- http://127.0.0.1:8000/docs (由Swagger UI生成)
- http://127.0.0.1:8000/redoc (由ReDoc生成)
charles map remote和fastapi结合
如某app有一个获取tab数据的接口xxx/sBar
,此时我们想测试sbar显示兼容性。当然可用之前在charles使用总结中介绍的map local来实现,使用本地文件,并修改内容为想要的数据结构。
- 这里介绍一下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"}}
- 启动服务
uvicorn main:app --reload
- 浏览器打开该地址进行校验是否是需要的数据结构
- 在charles中选中需要修改的session,右键选择 - map remote - 填入
http://127.0.0.1:8000/sBar
- 再次在客户端调用则可进一步对app显示做兼容测试
这里只是作为map remote的演示,这个示例似乎用map local更方便
其实在实际工作中map remote主要用于不同环境的切换