python - 在 Flask 中获取数据 JSON

标签 python json curl flask cmd

即使在这里和那里遵循许多示例,我也无法让我的 API 在 POST 方法中工作。 这是关于它的代码:

from flask import Flask, jsonify, request

@app.route('/api/v1/lists', methods=['POST'])
def add_entry():
    print("p0")
    content = request.get_json()
    appname = content.get('title')
    print(content)
    print(appname)

当我使用 curl 查询时(我在 Windows 上运行它):

curl.exe -i -H "Content-Type: application/json"-X POST -d '{"title":"titi"}' http://localhost:5000/api/v1/lists

curl.exe -i -H "Content-Type: application/json"-X POST -d "{"""title""":"""读一本书"""}"http://localhost:5000/api/v1/lists

我总是返回 400 错误:

HTTP/1.0 400 错误请求 内容类型:文本/html 内容长度:192 服务器:Werkzeug/0.12.1 Python/3.6.0 日期:2017 年 4 月 4 日星期二 21:55:29 GMT 400 错误请求 错误的请求 浏览器(或代理)发送了该服务器无法理解的请求。

我看不出错误在哪里。

感谢您的帮助。

最佳答案

即使使用“工作”代码,如果您的 if block 失败(当 value1value2None 时)也会导致同样的错误,因为您没有处理 if block 的 else 部分。更正后应该是:

@app.route('/api/v1/list', methods=['POST'])
def add_entry():
    print("p0")
    request_json     = request.get_json()
    value1           = request_json.get('First_Name')
    value2           = request_json.get('Last_Name')
    response_content = None

    if value1 is not None and value2 is not None:
        print("p3")
        cursor.execute("INSERT INTO person (first_name,last_name) VALUES (%s,%s)", (value1, value2))
        response_content = conn.commit()

    return jsonify(response_content)

当然,您可能需要比 None 更好的响应。

关于python - 在 Flask 中获取数据 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43218413/

相关文章:

python - python 2.7 中的 string_builder 装饰器 - 如何做以及我应该做吗?

python - 如何在 Python 中使用 MLE 估计高斯分布参数

jquery.ajax() 使用来自 mysql 的 json 数据

javascript - 热更新 JavaScript 中的特定对象

javascript - 使用类将 JSON 对象转换为 typescript 类型变量的正确方法?

PHP CURL - session 已过期

Node.js 和 Google Pagespeed API

linux - 无法访问亚马逊服务上的某些网站

python - 如何使用 selenium.py(python 代码)获取状态码

Python 检查将方法识别为 FunctionType 而不是 types.MethodType