http - 设计合适的 REST URI

标签 http url rest uri

我有一个 Java 组件,它扫描一组文件夹(输入/处理/输出)并返回 JSON 格式的文件列表。

相同的 REST URL 是:

GET http://<baseurl>/files/<foldername>

现在,我需要对每个文件执行某些操作,例如验证、处理、删除等。我不确定为这些操作设计 REST URL 的最佳方法。 由于它是直接文件操作,因此我没有文件的任何唯一标识符,除了它们的路径。所以我不确定以下是否是一个好的 URL:

POST http://<baseurl>/file/validate?path=<filepath>

编辑:理想情况下,我希望使用类似/file/fileId/validate 的东西。但是文件的唯一唯一 ID 是它的路径,我认为我不能将它用作 URL 本身的一部分。

最后,我不确定要使用哪个 HTTP 动词来执行诸如验证之类的自定义操作。

提前致谢!

问候, 阿南德

最佳答案

当你实现像 http:///file/validate?path 这样的路由时在为资源服务建模时,您对资源中的操作进行了编码,这不是预期的效果。

您可以对读取操作执行以下操作

获取 http://api.example.com/files将返回所有文件作为 URL 引用,例如

http://api.example.com/files/path/to/first
http://api.example.com/files/path/to/second
...

获取 http://api.example.com/files/path/to/first将返回文件的验证结果(为了便于阅读,我使用 JSON)

{
   name : first,
   valid : true
}

那是简单的只读部分。现在到写操作:

删除 http://api.example.com/files/path/to/first当然会删除文件

对文件处理进行建模是困难的部分。但是您可以将其建模为顶级资源。这样:

发布http://api.example.com/FileOperation?operation=somethingweird将创建一个虚拟文件处理资源并执行由 URL 参数 'operation' 给出的操作。将这些文件操作建模为资源使您可以异步执行操作并返回一个结果,该结果提供有关操作过程等的附加信息。

可以看看Amazon S3 REST API有关如何建模资源的更多示例和灵感。我强烈推荐阅读 RESTful Web Services

关于http - 设计合适的 REST URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8293132/

相关文章:

java - Spring 启动休息 api : how to respond gracefully if Request Body is sent in incorrect format?

angular - angular-cli "localhost:4200"没有访问控制允许来源

java - 在 Clojure 中使用重定向到 http ://foobar. mp3 的 http ://fizzbar. mp3

android - 在 Android 中从 URL 加载时图像加载尺寸较小

python - 重定向到新的 URL 进行解析

python - Django Rest Framework 和 Angular 2 文件上传

html - HTML 文件中 Cache-Control 元标记的范围

php - 如何从同一个客户端对同一个页面执行多个 HTTP 请求

php - 哪个术语最能描述 URL 路径的元素?

rest - 使用逻辑应用中的 HTTP 连接器连接到 Sharepoint