java 嵌套流 关闭,REST复杂/复合/嵌套资源[关闭]

@ray,精彩的讨论

@jgerman,不要忘记仅仅因为它是REST,并不意味着必须从POST设置资源 .

您选择在任何给定的资源表示中包含的内容取决于您 .

您单独引用的封面的情况仅仅是创建父资源(漫画书),其子资源(封面)可以交叉引用 . 例如,您可能还希望单独提供对作者,发布者,字符或类别的引用 . 您可能希望单独创建这些资源,也可以在漫画书之前创建这些资源,将其作为子资源引用 . 或者,您可能希望在创建父资源时创建新的子资源 .

您的封面的具体情况稍微复杂一点,封面确实需要漫画书,反之亦然 .

但是,如果您将电子邮件视为资源,并将发件人地址视为子资源,您显然仍可以单独引用该地址 . 例如,从地址获取所有内容 . 或者,使用前一个地址创建一条新消息 . 如果电子邮件是REST,您可以很容易地看到许多交叉引用的资源可用:/ received-messages,/ draft-messages,/ from-addresses,/ to-addresses,/ addresses,/ subject,/ attachments,/ folders ,/ tags,/ categories,/ labels,et al .

这是自动生成数据的最常见模式 . 例如,您不会为新资源发布URI,ID或创建日期,因为这些是由服务器生成的 . 然而,当您获得新资源时,您可以检索URI,ID或创建日期 .

您的二进制数据示例 . 例如,您希望将二进制数据作为子资源发布 . 获取父资源后,您可以将这些子资源表示为相同的二进制数据,或表示二进制数据的URI .

表单和参数已经与资源的HTML表示不同 . 发布导致URL的二进制/文件参数不是一个延伸 .

当您获得新资源的表单(/ comic-books / new),或者获取表单来编辑资源(/ comic-books / 0 / edit)时,您要求提供表单特定的资源表示 . 如果将其发布到内容类型为“application / x-www-form-urlencoded”或“multipart / form-data”的资源集合中,则要求服务器保存该类型表示 . 服务器可以使用保存的HTML表示或其他任何方式进行响应 .

您可能还希望允许将HTML,XML或JSON表示发布到资源集合,以用于API或类似目的 .

它也有可能代表您描述的资源和工作流程,考虑到漫画书后发布的封面,但要求漫画书有封面 . 示例如下 .

允许延迟创建封面

允许创建漫画创作所需的封面

允许交叉引用封面

允许多个封面

创建漫画书草稿

创建漫画书封面草稿

发布漫画书草稿

GET /漫画书

=> 200好,获取所有漫画书 .

GET /漫画书/ 0

=> 200 OK,获取带封面的漫画书(id:0)(/ cover / 1,/ covers / 2) .

GET /漫画书/ 0 /封面

=> 200 OK,获取漫画书的封面(id:0) .

GET /封面

=> 200 OK,获取所有封面 .

GET / cover / 1

=> 200 OK,用漫画书(/漫画书/ 0)获取封面(id:1) .

GET /漫画书/新

=> 200好,获取表格创建漫画书(表格:POST / draft-comic-books) .

POST / draft-comic-books

名称= foo

笔者=嘘声

出版商=咕

出版= 2011-01-01

=> 302找到,位置:/ draft-comic-books / 3,重定向到草稿漫画书(id:3),封面(二进制) .

GET / draft-comic-books / 3

=> 200好,获得有封面的漫画书(id:3) .

GET / draft-comic-books / 3 / cover

=> 200 OK,获取漫画书草稿(/ draft-comic-book / 3) .

GET / draft-comic-books / 3 / cover / new

=> 200好,获取表格为草稿漫画书(/ draft-comic-book / 3)创建封面(表格:POST / draft-comic-books / 3 / cover) .

POST / draft-comic-books / 3 / cover

cover_type =前

cover_data =(二进制)

=> 302找到,位置:/ draft-comic-books / 3 / cover,重定向到漫画书草稿的新封面(/ draft-comic-book / 3 / covers / 1) .

GET / draft-comic-books / 3 /发布

=> 200好,获取表格发布漫画书(id:3)(表格:POST /已发布 - 漫画书) .

发布/出版漫画书

名称= foo

笔者=嘘声

出版商=咕

出版= 2011-01-01

cover_type =前

cover_data =(二进制)

=> 302找到,位置:/ comic-books / 3,重定向到已出版的漫画书(id:3),带封面 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值