我已经从https://editor.swagger.io/生成了python客户端和服务器 - 并且服务器正常运行而没有编辑,但我似乎无法让客户端与它进行通信 - 或者与任何东西进行通信。
我怀疑我做了一件非常愚蠢的事情,但我在互联网上找到的例子要么不起作用,要么似乎期望我理解如何制作这个对象。这是我的代码(我还尝试过什么都不发送,字符串等):
import time
import swagger_client
import json
from swagger_client.rest import ApiException
from pprint import pprint
# Configure OAuth2 access token for authorization: petstore_auth
swagger_client.configuration.access_token = 'special-key'
# create an instance of the API class
api_instance = swagger_client.PetApi()
d = '{"id": 0,"category": {"id": 0,"name": "string"},"name": "doggie","photoUrls": ["string"], "tags": [ { "id": 0, "name": "string" } ], "status": "available"}'
python_d = json.loads(d)
print( json.dumps(python_d, sort_keys=True, indent=4) )
body = swagger_client.Pet(python_d) # Pet | Pet object that needs to be added to the store
try:
# Add a new pet to the store
api_instance.add_pet(body)
except ApiException as e:
print("Exception when calling PetApi->add_pet: %s\n" % e)
我正在使用python 3.6.4,当上面运行时,我得到:
Traceback (most recent call last):
File "petstore.py", line 14, in <module>
body = swagger_client.Pet(python_d) # Pet | Pet object that needs to be added to the store
File "/Users/bombcar/mef/petstore/python-client/swagger_client/models/pet.py", line 69, in __init__
self.name = name
File "/Users/bombcar/mef/petstore/python-client/swagger_client/models/pet.py", line 137, in name
raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501
ValueError: Invalid value for `name`, must not be `None`
我觉得我犯了一个令人难以置信的基本错误,但我从https://editor.swagger.io/完全复制了JSON - 但是因为我无法找到一个实际工作的例子,所以我不会#39我不知道我错过了什么。
答案 0 :(得分:2)
Python客户端生成器为API生成面向对象的包装器。您无法直接发布dict或JSON字符串,您需要使用生成的包装器创建Pet
对象:
api_instance = swagger_client.PetApi()
pet = swagger_client.Pet(name="doggie", status="available",
photo_urls=["http://img.example.com/doggie.png"],
category=swagger_client.Category(id=42))
response = api_instance.add_pet(pet)
答案 1 :(得分:1)
我最近遇到了类似的问题,最终通过在本地升级 python 版本来解决。我从 https://editor.swagger.io/ 生成了 python-flask-server zip 文件。然后我在本地用py 3.6.10设置环境。我在使用“Model_Name.from_dict()”解析输入时遇到了同样的错误,告诉我
raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501
ValueError: Invalid value for `name`, must not be `None`
然后我升级到python 3.7.x,问题解决了。我知道您的问题与版本无关,但以防万一有人遇到类似问题并寻求帮助可以看到此答案。