apollo-client-python
apollo-client-python copied to clipboard
数据类型转换存在兼容性问题
在#11 中,尝试使用eval来将字符串转换成Python 的内置类型,本身eval是一个危险的函数,可以执行任意字符串的代码,可能会带来安全隐患。
其次,一些转换可能不符合预期,以及出现错误,如下。
eval('1+1') -> 2
eval('192.168.1.1')
File "<string>", line 1
192.168.1.1
^^
SyntaxError: invalid syntax
另外,在转换发生异常时,不应该返回None值,否则会对调用方产生困扰(明明有配置项,但是get_value却是None)
我觉得只保留最基础的类型转换是可行的,比如"false"->False,后续的类型转换由调用者决定。或者采用更加安全的方式,比如通过传入类型参数。但是_convert_type 在 _change_listener 中也有使用,该方法对于整个项目变更较多,具体方案可能有待讨论