Реализация динамического URL для RESTful API в Google App Engine - PullRequest
2 голосов
/ 29 марта 2011

Клиентское приложение отправит сообщение с помощью метода GET на http://server/user/USER_ID/history, чтобы получить ответ JSON, содержащий историю использования пользователя.(это может быть список прослушанных песен, покупок и т. д.)

Я могу добраться до обработки http://server/user/USER_ID/ через следующий фрагмент:

application = webapp.WSGIApplication(
        [('/', BrowserTests),
         ('/user/([^/]+)?', UserHandler),
        ], debug=True)

КакиеЯ использую в UserHandler через:

user_id = str(urllib.unquote(resource))

И, таким образом, я могу выполнить работу для http://server/user/USER_ID. Но как я могу пойти дальше и потреблять history ?

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

Ответы [ 3 ]

4 голосов
/ 29 марта 2011

Вы можете пойти с чем-то вроде этого:

application = webapp.WSGIApplication([
    ('/user/([^/]+)/([^/]+)', UserHandler),
    ], debug=True)


class UserHandler(webapp.RequestHandler):
  def get(self, user_id, action_to_consume):
    self.response.out.write("Action %s" % action_to_consume)#Should print History
1 голос
/ 29 марта 2011

Добавить второй параметр

application = webapp.WSGIApplication(
        [('/', BrowserTests),
         ('/user/([^/]+)/([^/]+)$', UserHandler),
        ], debug=True)

class UserHandler(webapp.RequestHandler):
    def get(self, userid, history):
0 голосов
/ 31 марта 2011

Поочередно к ответам @Jose и @ systempuntoout, если вам нужен отдельный обработчик для каждого действия:

application = webapp.WSGIApplication([
    ('/', BrowserTests),
    ('/user/([^/]+)', UserHandler),
    ('/user/([^/]+)/history', HistoryHandler),
], debug=True)

class UserHandler(webapp.RequestHandler):
  def get(self, userid):
    pass

class HistoryHandler(webapp.RequestHandler):
  def get(self, userid):
    pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...