首页 > 解决方案 > Flask gettin 'NoneType' 对象不可下标

问题描述

我正在制作一个获取两个数据“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

我做错了什么?

标签: pythonapiflask

解决方案


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

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

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


推荐阅读