0

我正在制作一个获取两个数据“id”和“name”的 Api,但我'NoneType' object is not subscriptable"出错了name = request.json['Name']

from flask import Flask, jsonify, request, Response #import flask library

from checking import checker


app = Flask(__name__)

@app.route("/v1/products", methods=["GET", "POST"])
def getData():
    user_id = request.json['id']
    name = request.json['Name']
    data = {'id' : user_id, 'Name' : name}
    flag =  checker(data)

    if flag == True:
        return 200, 'OK'
    else:
        return 403, 'Forbidden'

    


if __name__ == '__main__':
    app.run(host='localhost', debug=True)

要为 API 发送数据,我运行以下代码:

curl -X POST -H "Content-Type: v1/products" -d '{'id' : '123', 'Name' : 'mesa'}' http://localhost:5000/v1/products

我做错了什么?

4

2 回答 2

1

问题不在于您的烧瓶代码,而在于您的 curl 请求。您没有正确设置内容类型和正文,因此您的 API 端点没有要处理的 json。

您需要将命令的第一部分更改为:curl -X POST -H "Content-Type: application/json"

您的请求正文中的引号也可能存在问题,您需要转义或修改引号,以免它们模棱两可。

于 2020-08-21T03:48:32.807 回答
0

这似乎对我有用。希望它对你有用:

from flask import Flask, jsonify, request, Response #import flask library

app = Flask(__name__)


@app.route("/v1/products", methods=["GET", "POST"])
def getData():
    user_id = request.args['id']
    name = request.args['Name']
    data = {'id' : user_id, 'Name' : name}
    print(data)

    if request.args != None:
        print('OK')
    else:
        print('Forbidden')

    return (data)


if __name__ == '__main__':
    app.run(host='localhost', debug=True)
于 2020-08-21T03:52:49.190 回答