Как обрабатывать тело запроса JSON с помощью инфраструктуры Starlette

Я перемещаю свою платформу API из более старой версии ApiStar в Starlette, и у меня возникают проблемы с правильным доступом к телу HTTP, которое в данном случае является полезной нагрузкой JSON, в функциях, к которым я направляюсь.

Вот что у меня работало с ApiStar:

from apistar import http
import json

def my_controller(body: http.Body):

    spec = json.loads(body)

    print(spec['my_key_1'])
    print(spec['my_key_2'])

Любая помощь в преобразовании вышеизложенного в синтаксис, используемый Старлеттом, была бы очень полезна, поскольку я не смог понять это из документации.

Спасибо!

0 ответов

В тестах Starlette есть пример чтения JSON из запроса.

Например

async def user_login(request: Request) -> JSONResponse:

    try:
        payload = await request.json()
    except JSONDecodeError:
        sprint_f('cannot_parse_request_body', 'red')
        raise HTTPException(status_code=HTTP_400_BAD_REQUEST, detail="cannot_parse_request_body")
    email = payload['email']
    password = payload['password']
Другие вопросы по тегам