swagger.example

在swagger頁面顯示example

class QueryWithWhereStringBody(BaseModel):
    qWhere: str
    
@app.post("/queryWithWhereString")
def query_with_where_string(
      query_body: QueryWithWhereStringBody = Body(
          examples={
              "1data": {
                  "summary": "1data",
                  "description": "查獲指定一筆",
                  "value": {
                      "qWhere": "ID='xxxxx'"
                  }
              }
          }
      )
):
    ...

撰寫過程突然遇上的錯誤

TypeError: Body() missing 1 required positional argument: 'default'

很莫名其妙的東西,另個專案沒有寫那個「default」也可以正常運作,現在卻非要我寫...

他在swagger頁面上不會看到,執行時如果沒有傳入任何參數就會預設使用他。

但其實如果沒有任何帶入,通常是需要被判斷出來的,可以設置為default=None,延用「is None」判斷去處理。

有default的EX
class DemoP(BaseModel):
  name: str

@app.post("/demo")
def demo(
        demo_p: DemoP = Body(
            default=None,
            examples={
                "demo1": {
                    "summary": "範例",
                    "description": "範例說明",
                    "value": {"name": "DEMO1"}
                }
            }
        )
):
    try:
        print(demo_p)
        result = {}
        return result
    except Exception as e:
        raise catch(e)

參考 https://fastapi.tiangolo.com/tutorial/schema-extra-example/

Last updated