【问题标题】:Flask restful model with variable keys带有可变键的 Flask 宁静模型
【发布时间】:2016-12-31 18:48:05
【问题描述】:

作为我的 RESTful API 的一部分,我发现自己需要返回一个带有“变量”键的 json,我将尝试通过一个简单的示例让事情更清楚:

我有不同的组,每个组都有一个group_id,所以预期的回报是:

{
    1: {
         "name": "first_group_name",
         ...
       },
    5: {
         "name": "second_group_name",
         ...
       }
}

如您所见,根 json 中的键 (group_ids) 不是我可以在模型中硬编码的,我只知道它们是整数。 谁能帮忙解决这个问题?

【问题讨论】:

  • 您的问题不够清楚,无法猜测。这些“键”是否与对象相关联?它们是客户端发送的查询的结果吗?你的例子看起来很不典型。如果要返回一组作为查询结果的对象,为什么不在数组中返回它们呢?为什么“键”(我认为它实际上是一个 ID)不是对象的一部分?
  • 您的猜测是正确的,键是对象的一部分。我可以返回一个包含 id 的数组,但返回一个“字典”更容易访问。
  • 确实没有。阅读社区 wiki 对此问题的回答:stackoverflow.com/questions/671118/… 并查看包含对象集合的示例响应。尽管没有官方标准,但对于 REST API 的良好实践以及尝试标准化的举措(如 Open API Initiative (github.com/OAI))已达成广泛共识。这并不意味着你想生成你的例子是错误的(称它为 REST 是有争议的),但在这种情况下,鉴于提供的信息,@metmirr 的答案看起来很合适。
  • 感谢您的帮助!我知道我想做的不是好的做法,这可能是我找不到合适的烧瓶模型的原因。我会按照你的建议返回一个列表。

标签: python rest flask flask-restful flask-restplus


【解决方案1】:

我不确定这是您需要的,但您可以这样做:

return_values = {}
group_ids = [1, 2, 3, 4]
for g_id in group_ids:
    return_values[g_id] = { "name": "%s_group_name"%i }

print(return_values)

#{1: {'name': 'group_1'}, 2: {'name': 'group_2'}, 3: {'name': 'group_3'}, 4: {'name': 'group_4'}}

如果您正在使用,您可以根据需要修改代码。

【讨论】:

  • 谢谢,但问题是专门针对flask RESTplus 模型的。
猜你喜欢
  • 2019-08-27
  • 1970-01-01
  • 2018-12-30
  • 2015-07-19
  • 1970-01-01
  • 2012-06-02
  • 2018-04-21
  • 2013-12-07
  • 2016-12-17
相关资源
最近更新 更多