首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在使用龙卷风RequestHandlers时,最佳的REST实现是什么?

在使用龙卷风RequestHandlers时,最佳的REST实现是什么?
EN

Stack Overflow用户
提问于 2011-04-06 01:48:33
回答 2查看 4.6K关注 0票数 5

我想定义一个REST,其一般模式为:

mysite.com/OBJECT_ID/associations

例如:

  • mysite.com/USER_ID/vacations -管理用户vacation
  • mysite.com/USER_ID/music -管理用户音乐library
  • mysite.com/PLAYLIST_ID/music中的音乐-在给定的播放列表

上下文中管理音乐

我在服务器端使用龙卷风,并寻找关于如何为这个API定义RequestHandlers的建议。例如,我想定义一个像:/([0-9,a-z,A-Z,-]+)/music",MusicHandler),这样的处理程序,但是我仍然停留在MusicHandler的实现上,它需要知道uri中指定的对象是否首先支持音乐,即如何防范类似的调用

mysite.com/LOCATION_ID/music

那里的地方和音乐没有任何关系。

是修改api以包含类型的最佳修复方法,即:

mysite.com/users/USER_ID/music

mysite.com/playlists/PLAYLIST_ID/music

然后为每个处理程序设置一个单独的处理程序:

/users/([0-9,a-z,A-Z,-]+)/music",UserMusicHandler),

/playlists/([0-9,a-z,A-Z,-]+)/music",PlaylistMusicHandler)

这似乎不对,但我真的不明白如何使这件事成功。我相信这是一个很简单的问题,我对巨蟒和龙卷风很陌生。

EN

回答 2

Stack Overflow用户

发布于 2011-04-18 18:17:23

首先,为了防止mysite.com/LOCATION_ID/music,我会在所有id之间创建差异。例如,让LOCATION_ID是一个32字符字符串,PLAYLIST_ID 34等等。这样,一旦调用处理程序,就可以检查字符串的长度。

或者,您可以使用正则表达式组在URI中捕获它,然后为每个处理程序定义不同的处理程序。(此外,您的ID应该在URI中的所有静态文本之后,这只是为了达到好的约定)。例如,如果您的PLAYLIST_ID是UUID,而您的LOCATION_ID是字符串:

代码语言:javascript
运行
复制
(r"/music/([\w]{8}-[\w]{4}-[\w]{4}-[\w]{4}-[\w]{12})", PlaylistMusicHandler), #playlistID
(r"/music/([A-Za-z0-9]+)", LocationHandler), #locationID
票数 2
EN

Stack Overflow用户

发布于 2011-05-26 14:05:12

代码语言:javascript
运行
复制
if not self.db.get("SELECT 1 FROM objects WHERE music_id = %s", object_id):
    raise HTTPError(404, "Music object %s not found" % name)

mysite.com/music/MUSIC_ID计划对我来说更有意义。

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

https://stackoverflow.com/questions/5560638

复制
相关文章

相似问题

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