首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >API REST falcon python POST方法

API REST falcon python POST方法
EN

Stack Overflow用户
提问于 2020-01-20 10:38:08
回答 2查看 1.7K关注 0票数 1

我试过用falcon编写API REST。

on_get方法运行良好,但在使用on_post时,我无法获得POST请求的主体,也不知道为什么

代码语言:javascript
运行
复制
class ProfileUpdate(object):
    def on_post(self, req, resp):
        data = json.load(req.stream)
        print(data)
        resp.body = {"test": "answer"}
        resp.status = falcon.HTTP_200
        return resp


def setup_profile():
    app = falcon.API()

    profile_update = ProfileUpdate()
    app.add_route('/profiles', profile_update)

    return app

我得到以下错误

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 135, in handle
    self.handle_request(listener, req, client, addr)
  File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 176, in handle_request
    respiter = self.wsgi(environ, resp.start_response)
  File "/usr/local/lib/python3.7/site-packages/falcon/api.py", line 318, in __call__
    body, length = self._get_body(resp, env.get('wsgi.file_wrapper'))
  File "/usr/local/lib/python3.7/site-packages/falcon/api.py", line 820, in _get_body
    body = body.encode('utf-8')
AttributeError: 'dict' object has no attribute 'encode'

我正在使用邮递员测试API。我尝试在POSTMAN中使用以下主体(原始的-> JSON)

代码语言:javascript
运行
复制
{
"email":"test"
}

我遗漏了什么?

EN

Stack Overflow用户

发布于 2020-01-24 14:37:11

文档中所述

您可以使用media使用请求原始体JSON,还可以将media附加到响应中。

如果要创建JSON,则需要零配置。只要访问或设置适当的媒体属性,让猎鹰为你做繁重的工作。

代码语言:javascript
运行
复制
class EchoResource:
    def on_post(self, req, resp):
        message = req.media.get("message")
        resp.media = {
            "message": message
        }
        resp.status = falcon.HTTP_200

警告: 一旦对请求调用了媒体,它就会消耗请求的流。

票数 5
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59821476

复制
相关文章

相似问题

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