Разработка интерфейса для веб-сайтов API - PullRequest
0 голосов
/ 10 августа 2010

Хорошо, я программирую способ взаимодействия с Grooveshark (http://grooveshark.com).. Сейчас у меня есть класс Grooveshark и несколько методов, один получает сеанс с сервером, другой получает токен, основанный на сеансе идругой используется для создания API-вызовов к серверу (и другие методы используют это). Прямо сейчас я использую это так ... Примечание использует Twisted и Tidefer в Twisted

g = Grooveshark()
d = g.get_session()
d.addCallback(lambda x: g.get_token())
## and then something like.... ##
g.search("Song")

Я считаю, что это не пифонично ибезобразный смысл, даже после инициализации класса сначала нужно вызвать два метода, иначе другие методы не будут работать. Чтобы решить эту проблему, я пытаюсь получить его так, чтобы метод, который создает вызовы API, заботился о сеансе и токене. В настоящее времяэти два метода (методы сеанса и токена) устанавливают переменные класса и ничего не возвращают (ну, нет). Поэтому мой вопрос: существует ли общий дизайн, используемый при взаимодействии с сайтами, которые требуют токены и сеансы? Также токен и сеансполучены с сервера, поэтому я не могу запустить их в методе init (as это будет либо заблокировано, либо не выполнено до вызова API)

Ответы [ 2 ]

3 голосов
/ 10 августа 2010

Я нахожу это унылое и уродливое чувство даже после инициализации класса вы сначала нужно вызвать два метода, иначе другие методы не будут работать.

Если это так, то почему бы не поместить часть get_session в класс __init__ вашего класса? Если это всегда должно выполняться прежде всего, это, кажется, имеет смысл. Конечно, это означает, что вызов класса все еще вернет еще неиспользуемый экземпляр - это неизбежно при асинхронном программировании на основе событий ... вы не блокируете, пока экземпляр не будет готов для использования".

Одной из возможностей будет передача обратного вызова для выполнения в качестве аргумента классу при его вызове; более Twisted-normal должен иметь Grooveshark функцию, которая возвращает отложенный (вы добавите к отложенному обратный вызов для выполнения и вызовете его с экземпляром в качестве аргумента, когда этот экземпляр наконец будет готов к б).

0 голосов
/ 10 августа 2010

Я очень рекомендую взглянуть на API графа Facebook .То, что вам нужны сеансы и некоторая аутентификация, не означает, что вы можете создать чистый REST API.Facebook использует OAuth для обработки аутентификации, но есть и другие возможности.

...