TypeError:'NoneType' 对象在烧瓶中不可下标

问题描述

我正在尝试将一些 JSON 数据发布到我设备上运行的 API。但是当我尝试从邮递员发布数据时,我能够成功发送数据,但在端点 TypeError: 'nonetype' object is not subscriptable

基本上我想将数据发布到 API 并在端点显示数据。

这是 JSON 数据,我是从邮递员那里发送的。

{
    "platform_details" : "Windows10","architectural_details" : "abc","hostname" : "xyz"
}
import requests
from flask import Flask,request,jsonify,make_response
from flask_restful import Resource,Api
import json,csv,os

app = Flask(__name__)
app.config["DEBUG"] = True


@app.route('/osinfo',methods=['GET','POST'])
def os_data():
    req_data = request.get_json()

    platform_details = req_data["platform_details"]
    architectural_details = req_data["architectural_details"]
    hostname = req_data["hostname"]

    return '''<h1>
    platform_details : {}
    architectural_details : {}
    hostname : {}
    </h1>'''.format(platform_details,architectural_details,hostname)

if __name__ == '__main__':
    app.run(host='192.168.1.36',port=5000)

当我像这样在 force=True 中设置 get_json

req_data = request.get_json(Force=True)

我收到另一个错误说明 JSONDecodeError: Expecting value: line 1 column 1 (char 0)

附言我是flask和python的新手。

解决方法

使用此代码再次测试。它打印出 JSON 请求:

import requests
from flask import Flask,request,jsonify,make_response
from flask_restful import Resource,Api
import json,csv,os

app = Flask(__name__)
app.config['DEBUG'] = True


@app.route('/osinfo',methods=['GET','POST'])
def os_data():
    req_data = request.json

    print(req_data)

    platform_details = req_data['platform_details']
    architectural_details = req_data['architectural_details']
    hostname = req_data['hostname']

    return jsonify(req_data)

if __name__ == '__main__':
    app.run(host='0.0.0.0',port=5000)

然后,使用它来发送请求:

resp = requests.post('http://localhost:5000/osinfo',json={'platform_details': 'platform_details','architectural_details': 'architectural_details','hostname': 'hostname'})

json_response = resp.json()
print(response.json())

这将print()来自服务器的 JSON 响应。