如何在没有资源的情况下构建 REST API?

How to build a REST API without resource?

我想构建一个轻量级的网络服务。客户应使用此服务来执行不同的任务。我阅读了很多关于 REST 的概念,现在我在识别资源时遇到了问题。

到目前为止,我找到的所有示例都很容易理解,并且有清晰的资源,例如 "product"、"book" 或类似的资源。就我而言,我不想从数据库中获取、创建或删除某些内容。我想简单地执行一个动作。

例如:客户端应向 API 发送访问令牌(而不是用户名和密码)和 url。如果令牌有效,服务器 (API) 将开始下载并将上传到云服务。我应该如何使用 REST API 执行此操作?所有来源都解释说不应在 URI 中使用动词。通常我会使用像 "uploadMediaContentToCloud" 之类的方法名称。我在数据库中没有 MediaContent 的表示。该操作既不是获取也不是创建,所以我不确定使用 GET 或 POST 或 ....?

对于我应该阅读的任何建议或文章,我都很感激。

编辑: 我只是想确保上传只是一个例子。服务器应该执行一项任务(下载东西、上传东西、运行 脚本等),我的问题是如果我不应该在 URI 中使用动词,我应该如何 build/design URI。

不要纠结于名词和动词。弄清楚你需要发送什么信息来完成操作,然后构造一个 URL 来处理它。

将 URL 视为函数调用:路径(? 之前)表示函数名称,查询(? 之后)表示参数。

在您的情况下,您需要上传一个文件,因此您需要使用 POST。在 URL 中,您将告诉服务器您正在向它发送一个文件,以及如何处理它。请求的主体将主要只是文件本身的内容,所有关于如何处理它的说明都编码在 URL.

首先假设您精通任何语言,here you can find discussion about implementing a web service to upload file. Here 是实现上传功能的实际脚本。

编辑:

当您无法将提供的服务可视化为资源时,您可以将它们命名为动词(但大多数 REST api 提供资源)。例如,您可以找到 twitter api 等服务,例如 destroy and echonest api with services like upload etc,. Here 是 uri 设计的最佳实践博客。