首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计网站api的接口

设计网站api的接口
EN

Stack Overflow用户
提问于 2010-08-09 23:45:16
回答 2查看 204关注 0票数 0

好的,我正在编写一种与Grooveshark (http://grooveshark.com)接口的方法。现在,我有一个类Grooveshark和几个方法,其中一个获得与服务器的会话,另一个获取基于会话的令牌,另一个用于构造对服务器的api调用(其他方法使用该方法)。现在我就这样用它..。注:在扭曲中使用扭曲和t.i.defer

代码语言:javascript
复制
g = Grooveshark()
d = g.get_session()
d.addCallback(lambda x: g.get_token())
## and then something like.... ##
g.search("Song")

我发现这种非unpythonic和丑陋的感觉,即使在初始化类后,您必须首先调用两个方法,否则其他方法将无法工作。为了解决这个问题,我试图得到它,以便创建api调用的方法能够处理会话和令牌。目前,这两个方法(会话方法和令牌方法)设置类变量,不返回任何内容(很好,没有)。因此,我的问题是,在与需要令牌和会话的站点进行接口时,是否使用了通用的设计?此外,令牌和会话是从服务器中检索的,因此我不能让它们在init方法中运行(因为在进行api调用之前,它可能会阻塞或不运行)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-10 00:08:45

我发现这种非unpythonic和丑陋的感觉,即使在初始化类后,您必须首先调用两个方法,否则其他方法将无法工作。

如果是这样的话,为什么不将get_session部分放在类的__init__中呢?如果它总是必须在任何事情之前执行,这似乎是有意义的。当然,这意味着调用类仍然会返回一个尚未使用的实例--这在异步事件驱动编程中是不可避免的.在实例准备好使用之前,不要“阻塞”。

一种可能是在调用类时将回调作为参数传递给类;更常见的是让Grooveshark是返回延迟的函数(将添加到延迟的回调以执行,并在实例最终准备使用时将其作为参数调用)。

票数 3
EN

Stack Overflow用户

发布于 2010-08-10 00:22:57

我强烈建议您看看Facebook图API。仅仅因为您需要会话和一些身份验证,并不意味着您可以构建一个干净的REST。Facebook使用OAuth来处理身份验证,但还有其他可能性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3445006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档