如何解决适用于商店软件 6
美好的一天,
我通过我的 GitLab ci pipline 中的 swagger-codegen-cli (v3) docker 镜像为 Shopware 6 商店生成了一个 python 客户端。
我遇到的问题是每个端点都返回空数据,但奇怪的是,当我调试客户端时,我可以通过检查器看到数据,但是在返回数据之前的一个步骤中,它尝试反序列化数据它返回一个字典,里面没有任何数据。
return_data = response_data
if _preload_content:
# deserialize response data
if response_type:
return_data = self.deserialize(response_data,response_type)
这是来自 __call_api()
函数。当我检查 response_data 时,我可以看到它包含我需要的数据,但 deserialize() 返回:
{'data': None,'included': None,'links': None,'meta': None}
我知道我可以将参数 _preload_content 设置为 false 但随后我将原始请求响应作为字节字符串获得,这违背了使用 swagger 客户端的目的。
- 是不是我店的规格有问题?
- 代码生成器是否工作不正常?
- 或者是 swagger 的 python 生成器的问题?
编辑:
我将问题缩小到所有继承自 Success 类的 Response 类的 __init__()
函数:
def __init__(self,data=None,links=None,*args,**kwargs): # noqa: E501
"""InlineResponse200156 - a model defined in Swagger""" # noqa: E501
self._data = None
self._links = None
self.discriminator = None
if data is not None:
self.data = data
if links is not None:
self.links = links
Success.__init__(self,**kwargs)
在最后一步,它调用了成功的 __init()
功能:
def __init__(self,meta=None,included=None): # noqa: E501
"""Success - a model defined in Swagger""" # noqa: E501
self._meta = None
self._links = None
self._data = None
self._included = None
self.discriminator = None
if meta is not None:
self.meta = meta
if links is not None:
self.links = links
self.data = data
if included is not None:
self.included = included
由于数据没有传递给 Success 的构造函数,因此 self.data 被 None 覆盖。
似乎swagger的pyhton生成器生成这些构造函数是错误的。当我删除 InlineResponse200156 中被覆盖的构造函数时,它似乎有效,但由于此问题存在于所有继承成功的生成类中,我认为问题出在生成器本身中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。