2011-09-27 21 views
0

对于web开发中API的使用,我很新颖。我正在使用python/django中的web应用程序来制作ajax jsonp请求到巨型炸弹api。当我学习如何使用这个API来获取信息需求时,我开始意识到某些事情应该可以在我的代码中更好地处理,以达到各种效率/安全性原因。但我不熟悉使用基于web的API的惯例。这里有几个问题一直在考虑:API使用约定

  1. 在地址栏或源代码中使用我的api-key是不好的。
  2. 由于我使用的是Django/Python,我应该为每个api请求创建一个自定义视图并使用simplejson?我想使用AJAX来减少请求数量,并获得更好的动态UI。
  3. 在这些情况下,api-keys,api-url保存到会话中,然后根据需要进行访问?

感谢您的帮助和耐心提前,

回答

2
  1. 有你的API密钥对用户可见意味着他们可以做请求你。这种情况是否糟糕取决于所讨论的API。如果可以进行三段身份验证,则服务器可以与API服务器协商一个临时密钥(例如Oauth会话密钥),并仅与浏览器共享该临时密钥。

  2. 如果您打算让浏览器通过AJAX执行API请求,您的视图根本不会进入图片,除非将API凭据传递给浏览器以用于JavaScript。如果您正在进行三段身份验证,您的服务器会将API密钥存储在永久(数据库或文件)的某处,但会话密钥可能位于更临时的位置(例如存储会话数据的任何位置)。但它仍然需要传递给浏览器,假设它正在执行实际的API请求。

+0

2.我想怎样处理这个的一种方法是通过创建我自己的API,将请求转发到giantbomb API。所以我会做一个ajax我自己的API /视图,使巨型炸弹api jsonp请求。我现在唯一的问题是,我知道如何使用Python/Django处理jsonp请求。 – russjman

+1

啊,如果你的计划是让服务器执行请求,你并不需要jsonp。有几个包使得与外部API轻松交流,但是取决于它是什么类型的API。如果它是REST,请查找python REST库。如果它是自定义的,你需要找到一个或写你自己的 - 我建议看看python包“请求”。 – GDorn

+0

针对python请求的+1。当我正在试验这个项目并使用urllib2来处理我的请求时,我就像是“所有这些都提出了一个简单的请求?...... wtf”。谢谢你! – russjman