如何解决使用 OpenAPI 3 生成 Python 客户端库
我正在尝试使用 openApI3 生成一个 python 客户端库。 为此,我创建了一个 openapi.yml 文件,我在其中使用请求和响应定义了我的 url 和架构。
我正在尝试使用我在这里找到的 openApI-generator https://github.com/OpenAPITools/openapi-generator 命令:openapitools/openapi-generator-cli
这个生成器,根据 yml 文件中定义的模式生成一组目录和文件。
当我测试它是自动生成的文件时,我收到错误
我在这里添加了我的 yml 文件和自动生成的 test_file,错误如下:`
这是我的 yml 文件
opanapi.yml
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="parent">
parent
<div class="child">
child
</div>
</div>
openapi: 3.0.1
info:
title: Config Service
version: '2.0'
description: Project and system config microservice
contact: {}
servers:
- url: ''
paths:
/config/v1/datasources:
get:
tags:
- config/v1
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Datasource'
description: Success
'404':
description: Not Found
operationId: get_datasources
summary: GET endpoint
description: return list of sources
components:
schemas:
Datasource:
description: ''
type: object
properties:
type:
type: string
minLength: 1
properties:
type: object
properties:
_id:
type: object
properties:
type:
type: string
minLength: 1
test_datasource.py
This is the auto-generated test file for models.
# coding: utf-8
"""
Config Service
Project and system config microservice # noqa: E501
The version of the OpenAPI document: 2.0
Generated by: https://openapi-generator.tech
"""
from __future__ import absolute_import
import unittest
import datetime
import tech.client.config
from tech.client.config.models.datasource import Datasource # noqa: E501
from tech.client.config.rest import ApiException
class TestDatasource(unittest.TestCase):
"""Datasource unit test stubs"""
def setUp(self):
pass
def tearDown(self):
pass
def make_instance(self,include_optional):
"""Test Datasource
include_option is a boolean,when False only required
params are included,when True both required and
optional params are included """
# model = tech.client.config.models.datasource.Datasource() # noqa: E501
if include_optional :
return Datasource(
type = '0',properties = tech.client.config.models.datasource_properties.Datasource_properties(
_id = tech.client.config.models.datasource_properties__id.Datasource_properties__id(
type = '0',)
else :
return Datasource(
)
def testDatasource(self):
"""Test Datasource"""
inst_req_only = self.make_instance(include_optional=False)
inst_req_and_optional = self.make_instance(include_optional=True)
if __name__ == '__main__':
unittest.main()
When I am test the above file,I am getting the below error.**
注意:在模型目录中 datasource_properties__id 不是自动生成的。
我对此进行了大量搜索,但不确定为什么会遇到此问题。 opeanAPI 3 不支持嵌套模式/嵌套对象吗?
任何帮助/线索都会非常值得赞赏。谢谢
解决方法
if include_optional :
return Datasource(
type = '0',properties = tech.client.config.models.datasource_properties.Datasource_properties(
_id = tech.client.config.models.datasource_properties__id.Datasource_properties__id(
type = '0',)
您的 test_datasource.py 文件中存在错误
我试过了:
openapi: 3.0.1
info:
title: Config Service
version: '2.0'
description: Project and system config microservice
contact: {}
servers:
- url: ''
paths:
/config/v1/datasources:
get:
tags:
- config/v1
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Datasource'
description: Success
'404':
description: Not Found
operationId: get_datasources
summary: GET endpoint
description: return list of sources
components:
schemas:
Datasource:
description: ''
type: object
properties:
Typez:
$ref: '#/components/schemas/Typez'
Typez:
type: object
properties :
pippo:
type: string
使用org/openapitools/openapi-generator-cli/4.3.1
生成的 test_datasource.py 运行良好
与:
openapi: 3.0.1
info:
title: Config Service
version: '2.0'
description: Project and system config microservice
contact: {}
servers:
- url: ''
paths:
/config/v1/datasources:
get:
tags:
- config/v1
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Datasource'
description: Success
'404':
description: Not Found
operationId: get_datasources
summary: GET endpoint
description: return list of sources
components:
schemas:
Datasource:
description: ''
type: object
properties:
typez:
$ref: '#/components/schemas/typez'
typez:
type: object
properties :
pippo:
type: string
生成的 test_datasourc.py 失败:
ERROR: testDatasource (__main__.TestDatasource)
Test Datasource
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_datasource.py",line 49,in testDatasource
inst_req_and_optional = self.make_instance(include_optional=True)
File "test_datasource.py",line 39,in make_instance
typez = openapi_client.models.typez.typez(
AttributeError: module 'openapi_client.models.typez' has no attribute 'typez'
----------------------------------------------------------------------
Ran 1 test in 0.001s
FAILED (errors=1)
我不确定
$ref: '#/components/schemas/Typez'
但它应该是嵌套的?!
关于:
对此进行了大量搜索,我不确定为什么会遇到此问题。 opeanAPI 3 不支持嵌套模式/嵌套对象吗?
我会说:取决于
希望有人能回答这个问题;-)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。