rest - 如何RESTful返回随机项目?

标签 rest random

我的设计暴露了两种资源:

  • 图片
  • 标签

  • 我希望客户能够通过他们的标签请求随机图像。例如:给我随机的带有“纽约”和“冬天”标签的图片。在这种情况下,RESTful 设计会是什么样子?

    最佳答案

    总结评论中的所有讨论,而不是改变我最初的建议,这就是我最终想出的:

    您想通过标签访问图像;每个标签都与一组图像相关。由于给定标签的使用量可能比另一个标签多得多(例如,纽约照片的使用量比芝加哥的多得多),您应该使用允许缓存的 RESTful 配置,这样您就可以缓存纽约的照片。恕我直言,解决方案是:

  • 每个图像都有一个固定的 URI:
    http://www.example.com/images/12345
    
  • 每个标签也有一个 URI:
    http://www.example.com/tags/New_York/random
    

    此 URI 充当集合中图像的随机调度器;它返回一个 303 See Other响应,重定向到集合的随机图像。 By definition ,这个 URI 不能被缓存,固定的应该,浏览器不应该理解重定向到第二个资源是永久的,所以它是最优的。
  • 您甚至可以通过以下方式访问整个集合:
    http://www.example.com/tags/New_York
    

    此访问将导致 300 Multiple Choices回复;它将整个集合(作为 URI,而不是图像!)返回给浏览器,浏览器决定如何处理它。
  • 您还可以使用各种标签的交集:
    http://www.example.com/tags/New_York/Autumn/Manhattan/random
    http://www.example.com/tags/Autumn/Manhattan/New_York/random (equivalent to the previous one)
    http://www.example.com/tags/New_York/girls/Summer/random
    etc.
    

  • 因此,每个图像都有一个固定的 URI,每个标签及其相关照片集都有一个固定的 URI,每个标签具有的随机调度程序都有一个固定的 URI。您不需要使用任何 GET 参数作为其他潜在的解决方案,因此这是您可以获得的 RESTful。

    关于rest - 如何RESTful返回随机项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/401191/

    相关文章:

    rest - 使用 REST API 更新嵌套对象

    python - 在 numpy 二项式函数上设置输出矩阵

    特定比例的随机分割文件

    c++ - 如何在不同线程中随机播种

    random - CUDA CURAND 是否容易受到数据争用的影响?

    javascript - 如何序列化NodeJS?

    rest - 验证现代Web应用程序最常用的方法是什么?

    c# - 适用于 .Net 的 Azure 服务管理 API

    http - 如何通过 curl 发送 REST XML POST 请求?

    actionscript-3 - 可播种随机数生成器,actionscript