加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用tornado RequestHandlers时最好的REST实现是什么

发布时间:2020-12-16 22:19:22 所属栏目:Python 来源:网络整理
导读:我想定义一个REST API,其一般模式为: mysite.com/OBJECT_ID/associations 例如: mysite.com/USER_ID/vacations 管理用户假期 mysite.com/USER_ID/music 管理用户音乐库中的音乐 mysite.com/PLAYLIST_ID/music 在给定播放列表的上下文中管理音乐 我在服务器

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

mysite.com/OBJECT_ID/associations

例如:

> mysite.com/USER_ID/vacations – 管理用户假期
> mysite.com/USER_ID/music – 管理用户音乐库中的音乐
> mysite.com/PLAYLIST_ID/music – 在给定播放列表的上下文中管理音乐

我在服务器端使用龙卷风,并寻找有关如何为此API定义RequestHandlers的建议.例如,我想定义一个处理程序,如:
/([0-9,AZ,– ])/音乐”,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),

/播放列表/([0-9,PlaylistMusicHandler)

这似乎不对,但我真的不明白如何使这项工作.我确定这是一个简单的问题,我是python和龙卷风的新手.

最佳答案
首先,为了防范mysite.com/LOCATION_ID/music,我会在你的所有id之间产生差异.例如,让LOCATION_ID为32个字符的字符串,PLAYLIST_ID为34,等等.这样,您可以在调用处理程序后立即检查字符串长度.

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

(r"/music/([w]{8}-[w]{4}-[w]{4}-[w]{4}-[w]{12})",PlaylistMusicHandler),#playlistID
(r"/music/([A-Za-z0-9]+)",LocationHandler),#locationID

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读