Bru*_*X92 2 python json curl cmd flask
即使遵循此处和此处的许多示例,我也无法在POST方法中使用我的API。这里是关于它的代码:
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)
Run Code Online (Sandbox Code Playgroud)
当我用curl查询时(我在Windows上运行它):
curl.exe -i -H“内容类型:应用程序/ json” -X POST -d'{“ title”:“ titi”}' http:// localhost:5000 / api / v1 / lists
curl.exe -i -H“内容类型:application / json” -X POST -d“ {”“”标题“”“:”“读一本书”“”}“ http:// localhost:5000 / api / v1 /列表
我总是有400错误的回报:
HTTP / 1.0 400错误请求内容类型:text / html内容长度:192服务器:Werkzeug / 0.12.1 Python / 3.6.0日期:Tue,04 Apr 2017 21:55:29 GMT 400错误的请求错误的请求浏览器(或代理)发送了该服务器无法理解的请求。
我看不到错误在哪里。
谢谢你的帮助。
小智 6
即使使用“工作”代码,如果您在if块中失败(when value1和value2is None),也会导致相同的错误,因为您没有处理elseif块的一部分。更正应为:
@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)
Run Code Online (Sandbox Code Playgroud)
当然,您可能想要比None响应更好的东西。
您的add_entry函数没有返回响应。你必须归还一些东西,即使它只是return 'OK'。
编辑:你仍然没有返回任何东西。FlaskPython中的print语句并不等同于 PHP 中的echo. 所有print要做的就是打印到控制台。您仍然需要返回一个值。如果您需要的是返回content并appname进行 JSON 编码,则添加
return json.loads({'contents': contents, 'appname': appname})
到你的函数结束。
需要明确的是,Flask 视图必须返回一个值。Python 函数隐式返回 None 是无关紧要的。发生的错误是您的函数没有 return 语句。
| 归档时间: |
|
| 查看次数: |
19136 次 |
| 最近记录: |