我正在使用Python Flask创建RESTful Web服务。对于我的一个端点,我想返回一个用户列表。 api端点以下列格式返回JSON:
{
"users": [
{
"Email": "email1@example.org",
"First": "Tom",
"Last": "Jones",
"id": 1
},
{
"Email": "email2@example.org",
"First": "Steven",
"Last": "Fry",
"id": 2
},
{
"Email": "email3@example.org",
"First": "Monty",
"Last": "Python",
"id": 3
}
]
}
如果我这样做,Restangular会回复
错误:getList的响应应该是一个数组,而不是一个对象或 别的什么
这是设计为Restangular期望一个数组而不是一个Javascript对象。根据我的理解,有两个首选方法可以解决这个问题:
选项1 - 将响应包装在数组中,如下所示:
[{
"users": [
{
"Email": "email1@example.org",
"First": "Tom",
"Last": "Jones",
"id": 1
},
{
"Email": "email2@example.org",
"First": "Steven",
"Last": "Fry",
"id": 2
},
{
"Email": "email3@example.org",
"First": "Monty",
"Last": "Python",
"id": 3
}
]
}]
然而,根据这篇文章http://flask.pocoo.org/docs/0.10/security/#json-security,这并不安全。我的理解在这里是否正确?
选项2 - 第二个选项是使用此方法:https://github.com/mgonto/restangular#my-response-is-actually-wrapped-with-some-metadata-how-do-i-get-the-data-in-that-case 在这种情况下,是否有可能(我需要?)为返回多个项目的所有端点上的每个getList请求创建一个拦截器,例如a'帖子'端点,'消息'终点等?这是一种可行或好的方法吗?
我的理解中是否有任何遗漏?
选项1似乎工作量较少,但可能引入安全问题。选项2可能会有更多工作,但可以减轻潜在的安全问题(如果有的话)。
如果有更好的选择3'听到它会很棒!