gpt4 book ai didi

Python Connexion - 响应修剪

转载 作者:太空宇宙 更新时间:2023-11-03 15:43:51 31 4
gpt4 key购买 nike

我正在使用Swagger Editor为了生成 Python Flask 服务器,我遵循了 Connexion文档,但有一个问题:

我在 swagger YAML 文件中定义了以下响应:

responses:
'200':
description: successful operation
schema:
type: object
required:
- firstname
- lastname
properties:
firstname:
type: string
lastname:
type: string

我期望返回以下响应:

{
"firstname": "Jane",
"lastname" : "Doe"
}

但是,数据库 API 返回一个更大的数据集,例如:

user=db.get_user_info()
pprint.pprint(user)

{
"firstname" : "Jane",
"middlename": "foo",
"lastname" : "Doe",
"age" : "25",
"sex" : "male",
...
}

为了返回我期望的响应,我有 2 个解决方案,但都不是完美的:

解决方案 1:

手动定义较小的数据集,例如:

user_response = {
"firstname" = user["firstname"],
"lastname" = user["lastname"]
}

return user_responose

但显然,对于每个响应,我必须硬编码一个变量_response,这意味着我必须在两个位置维护响应属性(swagger YAML 和代码)。

解决方案 2:

模型是由 swagger codegen 生成的,因此我必须访问模型并尝试获取响应属性,例如,用户模型可能是这样定义的:

self.swagger_types = {
'firstname': str,
'lastname': str,
}

这可能很简单,但实际上响应属性有很多 $ref,并且 $ref 中总是有 $ref。我找不到轻松获取所有属性的方法。

所以我的问题是,最好的解决方案是什么?

非常感谢!

最佳答案

连接不会影响您在这里如何做您想做的事情。您可以做的是访问处理程序中的 Swagger 定义,然后检查需要返回哪些字段。

关于如何取消引用 JSON 对象。您可以看到here how Connexion does that .

如果您在 connexion.App#add_api 方法调用中设置参数 validate_responses=True,Connexion 将验证端点的响应。因此,如果您的架构与规范不匹配,请不要担心,Connexion 将在运行时抛出异常。请记住为您的代码编写测试,因此在将应用程序部署到生产环境之前您会遇到此类错误。

关于Python Connexion - 响应修剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41929994/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com