我正在启动应该非常灵活和模块化的Web项目,并且肯定会在未来增长很多。当我们计划向其他开发人员提供api时,我开始认为将所有方法实现为api并提供远程和内部使用它们的功能可能是个好主意。
例如,假设我们要提取所有注册用户。所以我们在api中设计方法,比如get_all_users,它可以通过REST或内部调用获得。问题是我无法弄清楚如何区分访问与内部使用和远程使用,因为我还应该考虑内部调用的速度,代码重用和用户权限的检查(api访问的密钥等)。什么是最佳做法?如何组织这样的API?
答案 0 :(得分:2)
所以要构建API,Tastypie或Piston。这些让你编写'资源'(基本上是视图的API版本) - 而不是返回httpresponses,你只需返回活塞/ tastypie转换为json或xml或yaml的对象,或者你最喜欢的数据语言。
保护访问权限:考虑使用@login_required或@staff_member_required装饰器酌情装饰任何包含机密信息的资源。
您甚至可能想要更进一步,并编写一个装饰器来检查员工用户是否正在使用https(而您可能允许普通用户使用任何连接类型)。
答案 1 :(得分:0)
如果您还没有考虑过,我建议您使用Tastypie来设置django的API。 为了区分您的内部和远程使用,您可以简单地设计一个不同的URL方案。