当前位置: 首页 > 知识库问答 >
问题:

RESTful API中的POST方法可以在HTTPie上工作,但不能在Android/Postman上工作

荣俊杰
2023-03-14

我在Flask的RESTful API中编写了POST方法,并成功地使用命令行HTTP客户端HTTPie将数据添加到服务器。但是当我在Android上尝试时,出现了一个错误。以下是客户端的代码:

@app.route('/factories', methods=['POST'])
def create_factory():
    if not request.json or not 'fac_name' in request.json:
        abort(404)
    factory = {
        'id': factories[-1]['id'] + 1,
        'fac_name': request.json['fac_name'],
        'lat': request.json['lat'],
        'lng': request.json['lng']
    }

    factories.append(factory)
    return jsonify({'factory': factory}), 201

烧瓶的误差:

192.168.0.101-[13/May/2019 03:37:44]“POST/Factories HTTP/1.1”500-回溯(最近的调用):

文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask\app.py”,第2295行,在wsgi_app response=self.handle_exception(e)中

文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask\app.py”,第1741行,在handle_exception reraise(exc_type,exc_value,tb)中

文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask_compat.py”,第35行,在reraise中提高值

文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask\app.py”,第2292行,位于wsgi_app response=self.full_dispatch_request()中

文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask\app.py”,第1815行,位于full_dispatch_request rv=self.handle_user_exception(e)中

文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask\app.py”,第1718行,在handle_user_exception中(exc_type,exc_value,tb)

文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask_compat.py”,第35行,在reraise中提高值

文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask\app.py”,第1813行,位于full_dispatch_request rv=self.dispatch_request()中

文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask\app.py”,第1799行,在dispatch_request中返回self.view_functionsrule.endpoint

'fac_name': request.json['fac_name'],

更新:我将If not行更改为If not request.json:abort(401),现在是401 error。我也试过使用Postman,这是相同类型的错误,所以我认为这与Android代码无关,我从这里删除了Android代码。

共有1个答案

陶唯
2023-03-14

您期待一个JSON请求

if not request.json or not 'fac_name' in request.json:

但你在发送表单数据。

然后必须在请求正文中添加一个有效的json。

 类似资料: