在用FastAPI設計swagger時,預設都是用要curl的語法呈現出來,所以通常都會是一串json的字串
這樣做並沒有太大的問題,但有時候測試的時候,會想要有一個可以很簡單的按滑鼠兩下就可以輸入的方式
如下圖所示
因此,在保有程式的OOP架構下,希望可以有輸入框的功能,研究了一下後發現了這個做法
用Depends()跟Query(…)完成相關的設計,供參考囉!
(中間順便提供了一個要換json的key的方式)
class sendOrderTEST(BaseModel):
setID: str = Query(...)
ID01: str = Query(...)
ID11: str = Query(...)
ID21: str = Query(...)
ID02: str = Query(...)
ID12: str = Query(...)
ID22: str = Query(...)
@app.post("/sendOrderTEST", response_model=dict, tags=["sendOrderTEST"], summary="Test", description="Test")
def run_sendOrderTEST(model: sendOrderTEST = Depends()):
try:
with open(f'./TEST.json', 'r', encoding='utf-8') as f:
json_info_data = json.load(f)
json_info_data['setID'] = f"{model.setID}"
new_target_carrier_map = {}
for key, value in json_info_data['EXAMPLE'].items():
modified_key = key.replace("TEST", model.setID)
new_target_carrier_map[modified_key] = value
json_info_data['EXAMPLE'] = new_target_carrier_map
json_info_data['EXAMPLE'][model.setID][0][0]['Id'] = model.ID01
json_info_data['EXAMPLE'][model.setID][1][0]['Id'] = model.ID11
json_info_data['EXAMPLE'][model.setID][2][0]['Id'] = model.ID21
json_info_data['EXAMPLE'][model.setID][0][1]['Id'] = model.ID02
json_info_data['EXAMPLE'][model.setID][1][1]['Id'] = model.ID12
json_info_data['EXAMPLE'][model.setID][2][1]['Id'] = model.ID22
except Exception as e:
logger.error(e)
raise HTTPException(status_code=500, detail=str(e))
return {"status": 200}