簡體   English   中英

如何使用 FastAPI 訪問路由器 function 中的請求 object?

[英]How to access request object in router function using FastAPI?

我是 FastAPI 框架的新手,我想打印出響應。 例如,在 Django 中:

@api_view(['POST'])
def install_grandservice(req):
    print(req.body)

在 FastAPI 中:

@app.post('/install/grandservice')
async def login():
   //print out req

我試着喜歡這個

@app.post('/install/grandservice')
async def login(req):
    print(req.body)

但我收到此錯誤: 127.0.0.1:52192 - "POST /install/login HTTP/1.1" 422 Unprocessable Entity

請幫我:(

您可以在路由器 function 中定義一個Request類型的參數,如

from fastapi import FastAPI, Request

app = FastAPI()


@app.post('/install/grandservice')
async def login(request: Request):
    print(request)
    return {"foo": "bar"}

這也包含在文檔中,在直接使用請求 object部分下

這是一個打印fastAPI Request內容的示例。 它將請求的主體打印為 json(如果它是 json 可解析的),否則打印原始字節數組。

async def print_request(request):
    print(f'request header       : {dict(request.headers.items())}' )
    print(f'request query params : {dict(request.query_params.items())}')  
    try : 
        print(f'request json         : {await request.json()}')
    except Exception as err:
        # could not parse json
        print(f'request body         : {await request.body()}')


@app.post("/printREQUEST")
async def create_file(request: Request):
    try:
        await print_request(request)
        return {"status": "OK"}
    except Exception as err:
        logging.error(f'could not print REQUEST: {err}')
        return {"status": "ERR"}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM