首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Starlette框架处理JSON请求体

如何使用Starlette框架处理JSON请求体
EN

Stack Overflow用户
提问于 2019-02-26 03:03:44
回答 2查看 5.4K关注 0票数 3

我正在将我的应用程序接口框架从旧版本的ApiStar迁移到Starlette,并且在我路由到的函数中,正确访问HTTP (在本例中是一个JSON有效负载)时遇到了问题。

这就是我在ApiStar上的工作:

代码语言:javascript
复制
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'])

任何将上面的语法转换为Starlett使用的语法的帮助都会非常有帮助,因为我无法从文档中找出它。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-09 00:38:34

Starlette tests有一个从请求中读取JSON示例。

代码语言:javascript
复制
    async def app(scope, receive, send):
        request = Request(scope)
        try:
            data = await request.json()
            print(data['my_key_1'])
        except RuntimeError:
            data = "Receive channel not available"
        response = JSONResponse({"json": data})
        await response(scope, receive, send)
票数 1
EN

Stack Overflow用户

发布于 2020-04-29 12:07:59

例如

代码语言:javascript
复制
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']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54873055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档