【发布时间】:2015-03-17 16:47:55
【问题描述】:
我正在使用 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 需要一个 Array 而不是 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 请求创建一个拦截器,例如'posts'端点,'messages'端点等?这是一个可行的或好的方法吗?
我的理解中有什么遗漏吗?
选项 1 似乎工作量较小,但可能会引入安全问题。选项 2 工作量更大,但可以缓解潜在的安全问题(如果有的话)。
如果有更好的“选项 3”,那就太好了!
【问题讨论】:
标签: javascript json security rest flask