从OpenAPI定义文件中,我使用Swagger-UI为Python生成了一个Swagger客户端。我在使用需要请求主体的POST函数时遇到问题。在此,正确的方法是什么?
该定义定义了以下内容:
"/xyz" : {
"post" : {
"tags" : [ "xyz" ],
"operationId" : "xyz",
"requestBody" : {
"content" : {
"multipart/form-data" : {
"schema" : {
"required" : [ "d1", "d2" ],
"type" : "object",
"properties" : {
"d1" : {
"format" : "binary",
"type" : "string"
},
"d2" : {
"format" : "email",
"type" : "string",
"nullable" : false
}
}
}
}
},
"required" : true
},
字符串
该方法存在于:
my_api.xyz(...)
型
但是我不知道如何使用这些参数。我发现,该方法需要一个body
参数:
my_api.xyz(body)
型d1
必须是xml文件的内容。
1条答案
按热度按时间wf82jlnq1#
我将你的示例模式粘贴到https://editor-next.swagger.io/中,并通过添加 Package 器对象来编辑足够的内容以生成Python客户端,如:
字符串
在它生成的文件的zip中是
swagger_client/api/xyz_api.py
型
我们可以看到,
d1
参数被视为一个文件,正如我们在模式中对"format" : "binary"
所期望的那样如果我们查看
swagger_client/api_client.py
上的通用API客户端实现,我们可以看到文件参数是如何处理的:型
以及:
型
因此,似乎期望
d1
参数值是文件名(或文件名列表),即路径到客户端正在运行的本地文件系统上的文件,然后读取文件的内容并在请求的POST主体中发送。