F.B*_*ann 5 python-3.x swagger shopware openapi swagger-codegen
再会,
我已经通过我的 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)
Run Code Online (Sandbox Code Playgroud)
这是从__call_api()
函数。当我检查 response_data 时,我可以看到它包含我需要的数据,但 deserialize() 返回:
{'data': None, 'included': None, 'links': None, 'meta': None}
我知道我可以将参数 _preload_content 设置为 false,但随后我将原始请求响应作为字节字符串获取,这违背了使用 swagger 客户端的目的。
编辑:
我将问题缩小到__init__()
所有继承自 Success 类的 Response 类的功能:
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, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
在最后一步,它调用__init()
成功的功能:
def __init__(self, meta=None, links=None, data=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
Run Code Online (Sandbox Code Playgroud)
由于数据未传递给 Success 的构造函数,因此 self.data 被 None 覆盖。
似乎swagger的pyhton生成器生成这些构造函数是错误的。当我删除 InlineResponse200156 中被覆盖的构造函数时,它似乎有效,但由于此问题存在于所有继承成功的生成类中,我认为问题出在生成器本身中。
归档时间: |
|
查看次数: |
128 次 |
最近记录: |