【问题标题】:How to create a RESTful interface for the following scenario?如何为以下场景创建 RESTful 接口?
【发布时间】:2010-12-16 22:23:16
【问题描述】:

我有一个名为 Media 的资源,它有许多属性(Name、MediaType、MetaData、File)。媒体资源还包含一个物理文件。现在从文件中收集了媒体资源(元数据)的一些细节。在我的系统中,我能够以两种方式工作。

1) 创建一个媒体资源,设置名称和媒体类型,然后向它发布一个文件(更新元数据)。

我目前在我的网络服务中使用如下:

POST /rest/media(创建并返回一个媒体资源)
GET /rest/media/{id}(获取特定媒体资源)
PUT /rest/media/{id}/file(上传文件,并更新媒体资源)
GET /rest/media/{id}/file (获取上传的文件)

2) 上传一个文件,它会自动创建一个Media资源,将Name设置为文件名,并自动从文件扩展名中计算出MediaType。

这是我需要帮助构建的场景。我想支持这两种方法,但不确定如何将其映射到 RESTful URL 结构。

我对一般的“RESTful”建议持开放态度,但如果您有基于 OpenRasta 的具体建议,那将是理想的。

【问题讨论】:

    标签: rest architecture openrasta


    【解决方案1】:

    我要告诉你一个好消息。这不仅是为您设计的,而且还是许多现有客户端和服务器已实施的标准:http://bitworking.org/projects/atom/rfc5023.html#media-link-entries

    【讨论】:

    • 太好了。但是我在创建文件夹时遇到了问题,因为它实际上没有文件,而且据我了解,您必须通过发布文件来创建媒体实体?
    • @Matt 不确定文件夹是什么意思。就 Atom 而言,您需要做的就是发送字节流来创建媒体资源。
    • 我的意思是,在我的场景中,Media 可以是一个文件,但也可以表示一个没有文件的文件夹,所以不可能只创建一个“media-链接”
    • @Matt Atom 条目可以轻松指向另一个包含与该文件夹等效的提要。如果您无法使用基于 Atom Pub 的解决方案满足您的要求,我会感到非常惊讶。
    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多