在python中调用flask Restful api时出错

问题描述 投票:-1回答:1

你好,我是python的初学者,我在我的本地机器'localhost'上调用api时遇到此错误

from flask import Flask,request
from flask_restful import Resource,Api

app = Flask(__name__)
api = Api(app)

todos = {}
class HelloWorld(Resource):
    def get(self):
        return 'Hello, World War 3'

class Todo(Resource):
    def get(self, todo_id):
        return {todo_id: todos[todo_id]}

    def put(self,todo_id):
        todos[todo_id] : request.form['data']
        return {todo_id: todos[todo_id]}

api.add_resource(HelloWorld,'/')
api.add_resource(Todo,'/<string:todoId>')

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

这是我在调用这个API时遇到的错误

raise JSONDecodeError("Expecting
value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

它是一个非常小的代码,但我无法捕捉到真正的问题。我正在烧瓶的官方网站上做:Flask Site

我在同一个问题上看到了其他帖子,但它们是高级别的,我无法理解。任何帮助将不胜感激,谢谢

python flask
1个回答
0
投票

您的代码中存在以下几个问题:

  • 而不是保持Todo列表为空,添加一些东西,测试如下:todos = {'1': "Say hello"}
  • todo的API端点将todoId作为字符串对象,但在get和put方法中,您将todo_id作为参数。两者都应该相同。
  • 而不是返回单个字符串,最好返回一个JSON对象。就像在你的代码中用'Hello, World War 3'之类的东西替换{'msg': 'Hello, World War 3'}

注意:最后一个只是为了让您的信息保持所有回报标准,而不是真正的问题。

使用以下代码进行测试,并与相关代码进行比较。你会明白的。

from flask import Flask, request
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)

todos = {'1': "Say hello"}

class HelloWorld(Resource):
    def get(self):
        return {'msg': 'Hello, World War 3'}

class Todo(Resource):
    def get(self, todo_id):
        return {todo_id: todos[todo_id]}

    def put(self,todo_id):
        todos[todo_id] : request.form['data']
        return {todo_id: todos[todo_id]}

api.add_resource(HelloWorld,'/')
api.add_resource(Todo,'/<string:todo_id>')

if __name__ == '__main__':
    app.run(debug=True)
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.