【问题标题】:Perform user action via API通过 API 执行用户操作
【发布时间】:2011-11-07 09:09:06
【问题描述】:

我决定为我的音乐网站编写一个 API。我真正想要的是在创建我的 API 时实现 REST。如果我想让功能说,通过 API 播放下一首歌曲,我该怎么做?

就我构建的 URL 而言,它会是 API/{ID}/NextSongAPI/{ID}/?NextSong 还是 API/{ID}?NextSong。或者会不会有什么不同?

就代码方面而言,我计划让 Web 服务在 PHP 中运行。我需要某种身份验证步骤。使用 API 对用户进行身份验证的最佳方式是什么? (我想可能有一个非常好的在线资源或其他东西。)

最后,音乐播放器采用 HTML5 和 Javascript/jQuery。使用 Web 服务让播放器真正转到下一首歌曲的最佳方式是什么?我有一个 nextSong() javascript 函数,但我不知道如何访问它。我唯一能想到的就是某种轮询,无论是 AJAX 长轮询,还是定时轮询。还有其他更好、更有效的方法吗?

感谢您的帮助,我真正需要的是朝着正确的方向前进,到目前为止,我所知道的很多都是由于我在 Sharepoint 2010 中使用 Microsoft 的 listdata.svc RESTful 网络服务的经验。我剩下的知识是仅限于this article about REST APIs in PHP

【问题讨论】:

    标签: php javascript api rest


    【解决方案1】:

    如果您的 URL 中包含“NextSong”,则意味着您必须将每个用户状态保存在服务器上。如果我有一个播放器并使用 AJAX 来对抗 REST-API,我会让服务器成为“愚蠢的仆人”,做我告诉它做的所有事情,并让逻辑在客户端。

    例如,我将有一个服务来获取 JSON 或 XML 格式的播放列表。在客户端解析这个。当您收听该播放列表中的一首歌时,您知道您在播放列表中的位置,以及当用户或播放器要求下一首歌曲时,音乐播放器将在播放列表中查找(保存在对象数组中,可能是您拥有属性的链接列表上一首歌曲和下一首歌曲?),调用开始播放歌曲ID#####的服务。例如 API/{ID}/Play/{SongID} 或 API/{ID}/Song/{SongID}。

    问候

    (编辑固定错字)

    【讨论】:

    • 只是提供一个不同的视角,当我构建 RESTful 系统时,客户端是极其愚蠢的,而服务器是智能的。服务器提供包含链接的表示。客户端只是以某种方式将这些链接呈现给用户,当用户激活链接时,客户端会调用服务器。客户不知道自己在做什么。
    • 让我试着从你的两个角度来理解这一点: Tobias:你说让 web 服务变得非常透明,所以它几乎只是一个简单的数据源,所有的动作和逻辑都被处理客户端? @DarrelMiller:您说让 Web 服务非常灵活,因此所有操作和逻辑都在服务器端执行,而客户端几乎只是启动一种工作流程?两者似乎都有非常明显的优点和缺点,我将不得不看一下。你们谁知道如何让播放器播放下一首歌曲?
    • Vap0r 当然我知道如何让它播放下一首歌,但在你的情况下,我不确定你有什么可用的。您是否有恒定的音乐流,您想更改从服务器上读取哪个文件,或者当您更改曲目时播放器是否开始从“新来源”读取?如果您要告诉服务器播放下一首歌曲,您的服务器是否知道下一首歌曲是哪一首,或者您是否需要新的逻辑?
    • @Tobias:服务器会知道下一首是哪首歌,它不是源源不断的音乐流。 Javascript是播放歌曲的内容。我想一个更好的问题是如何获得 Web 服务请求以在 javascript 中更改客户端的某些内容。
    • @Vap0r 你不能只用javascript改变服务器端的任何东西,你只能打电话给服务器并询问“请播放下一首歌”,然后服务器会按照你的要求做与服务器代码有关(我假设您没有运行 javascript 服务器)所以只需将一些代码添加到开始播放下一首歌曲的“页面”API/{ID}/Song/{SongID}。
    猜你喜欢
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    相关资源
    最近更新 更多