首页 文章

用于JSON类型数据的Python上的REST API

提问于
浏览
0

我目前正在尝试了解如何使用Python(Flask)创建REST API,这将允许用户通过浏览以下给出的URL来获取以JSON格式表示的一组数据:localhost:5000 / DPM . 我写了以下Python脚本但是收到错误:

文件“mysql.py”,第23行,在api.add_resource(DPM,'/ DPM')文件“C:\ Program Files \ Anaconda3 \ lib \ site-packages \ flask_restful__init __ . py”,第404行,在add_resource self中._register_view(self.app,resource,* urls,** kwargs)文件“C:\ Program Files \ Anaconda3 \ lib \ site-packages \ flask_restful__init __ . py”,第444行,在_register_view resource_func = self.output(资源 . as_view(endpoint,* resource_class_args,AttributeError:type object'DPM'没有属性'as_view'

from flask import Flask
from flask_restful import Resource, Api
from sqlalchemy import create_engine
import json

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

class DPM:
    def __init__(self, time, month):
       self.time = time
       self.month = month
energy = DPM('[12.18]','11')

def jdefault(o):
    return o.__dict__
print(json.dumps(energy, default=jdefault, indent=4))

api.add_resource(DPM, '/DPM')

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

我在哪里做错了?

2 回答

  • 2

    要向API公开的类必须从Resource继承,此类实现基本方法,例如允许您呈现输出的as_view . 然后你必须实现一些方法,例如GET:

    from flask import Flask
    from flask_restful import Resource, Api
    
    app = Flask(__name__)
    api = Api(app)
    
    class DPM(Resource):
        def __init__(self):
           self.time = '[12.18]'
           self.month = "11"
        def get(self):
            return self.__dict__
    
    api.add_resource(DPM, '/DPM')
    
    if __name__ == '__main__':
        app.run(debug=True)
    
  • 0

    我假设你安装了所需的软件包(flask_restful,jsonify,)

    class DPM(Resource):
        def get(self):
            cur = mysql.connection.cursor()
            result = cur.execute('your sql command here')
            list= cur.fetchall()
            mysql.connection.commit()
            cur.close()
            rest_list = jsonify(list)
            return  rest_list
    
    api.add_resource(DPM, '/dpm')
    
    if name == '__main__':
        app.run()
    

    这是没有带有flask_restful的orm的mysql

    You can find full http methods on flask rest here

相关问题