Python(Flask RESTful API)修改对象

时间:2018-06-14 14:32:08

标签: python flask-restful

我遇到了一个对象(配置对象)的问题,我希望修改python程序和外部API用户。如果我使用API​​并PUT新数据,则保存数据。如果我有Python程序尝试修改对象,我在进行GET时无法观察到这种变化。正如您所看到的,我将config.encoding更改为“test”,但在进行GET时,我没有观察到更改。我仍然看到编码设置为“ASCII”。我对Python比较陌生,可能会忽略一些简单的事情。

感谢。

config = util.Config()

class api_Config(Resource):
    def get(self, id):
        return [{"id": config.id,
                 "capture": config.capture,
                 "controller": config.controller,
                 "gateway_ip_address": config.gateway_ip_address,
                 "port": config.port,
                 "interval_rate": config.interval_rate,
                 "encoding": config.encoding}], 200
    def put(self, id):
        parser = reqparse.RequestParser()
        parser.add_argument("capture")
        parser.add_argument("controller")
        parser.add_argument("gateway_ip_address")
        parser.add_argument("port")
        parser.add_argument("interval_rate")
        parser.add_argument("encoding")
        args = parser.parse_args()
        config.capture = args["capture"]
        config.controller = args["controller"]
        config.gateway_ip_address = args["gateway_ip_address"]
        config.port = args["port"]
        config.interval_rate = args["interval_rate"]
        config.encoding = args["encoding"]
        return [{"id": config.id,
                 "capture": config.capture,
                 "controller": config.controller,
                 "gateway_ip_address": config.gateway_ip_address,
                 "port": config.port,
                 "interval_rate": config.interval_rate,
                 "encoding": config.encoding}], 200

if __name__== "__main__":
        app = Flask(__name__)
        api = Api(app)
        config = util.Config()
        api.add_resource(api_Config, '/<string:id>')
        app.run(debug=True)
        print config.encoding
        config.encoding = "test"

1 个答案:

答案 0 :(得分:0)

您可以在两个位置创建config对象。一个是在第一行,你说config = util.Config()看起来util.Config是一个类,然后util.Config()返回该类的一个实例,或者它是一个函数,无论那个函数是什么退货将分配给config。无论哪种方式,这都是config方法使用的api_Config.get对象。

创建此配置对象实例的第二个位置是在if __name__== "__main__":块之后,这将是一个全新的对象,并且不会被那些api处理程序使用。

您可能已经足够删除第二个定义并使用

if __name__== "__main__":
    app = Flask(__name__)
    api = Api(app)

    api.add_resource(api_Config, '/<string:id>')
    app.run(debug=True)
    print config.encoding
    config.encoding = "test"

不修改其余部分。