Restful Web服务API:如何处理100个音乐文件的Web URI路由



我是REST API世界的全新Bie。从我阅读的内容中,我认为我了解2件事。

1)REST使用相同的HTTP方法(获取等)来用于服务器上的特定资源。

2)必须从唯一的URI访问我的服务器上的每个资源。

因此,结合1和2,我可以发送HTTP请求发送资源URI(例如Radio.com/music/1和Get请求,然后将获取音乐歌曲1)。

现在,我有一个简单的HTML页面,该页面在服务器上具有100个音乐文件的链接。这个想法是客户将单击链接,然后应该能够播放/下载音乐文件(我不太关心与音频相关的部分)。因此,服务器必须提供每个音乐文件的链接,例如Radio.com/music/1。

我的问题:Q1)必须以这种方式将客户端暴露于每个URI中的资源。因此,当托管HTML页面时,我应该分别为每个音乐文件链接列出这些链接

Q2)我们需要为服务器上100个音乐文件提供通往每个资源的路线。如果我在辛纳屈(Sinatra)做的话,我需要为100个音乐文件中的每一个中的每一个都做一条路线吗?链接'/do'/music/1,'/do'/do'/music/2等的东西

(不是很麻烦,如果我添加100个音乐文件,那么我需要在Sinatra中添加100个路线)。

这是其余API的工作方式,还是我完全弄错了?

想象您有两个服务器。

  1. 第一个服务器是您的API服务器:http://api.yourhost.com/v1/...(Java,Node.js等...)此休息服务器将返回一个简单的JSON响应:

    {
    "base_url"  : "http://static.yourhost.com/music/",
    "tracks"    : [
            {
                "name" : "track1",
                "file_name" : "track1.mp3"
                "file_size" : "3.43MB"
            },
            {
                "name" : "track2",
                "file_name" : "track2.mp3"
                "file_size" : "6.12MB"
            }
            [...]
    ]
    }
    
  2. 第二服务器:http://static.yourhost.com/是您的内容传递服务器(Apache,nginx等...)

这个想法是,您的 API REST服务器永远不要发送诸如音频或图像之类的二进制数据。它仅发送JSON/XML。

您也可以为每个音频文件发送完整的URL,但是此信息可能是多余的。

ad 1)

当托管HTML页面时,我应该为每个音乐文件链接单独列出这些链接

如果您认真对待休息,如果您看到此HTML页面是 All 音乐文件的集合资源的表示形式,则应执行此操作。休息的一种基本机制是客户的链接。客户应该只能遵循链接而无需亲自构建链接。

ad 2)

我们需要有一条通往服务器上100个音乐文件的每个资源的路线。

每个实现Restful服务器的库都能具有 PATH参数的路由。通常使用

之类的模式来定义这样的路线
/Music/{id}

其中 {id}是路径参数。然后,绑定到此路由的代码将提供一个名为id的变量。使用这种方法,您只需要一条路线。

最新更新