在REST中建立关系的一般做法是什么?

在REST中建立关系的一般做法是什么?,rest,Rest,如何在RESTAPI中建模层次关系 假设我想在相册中添加照片,我可以这样做 1. 发布www.example.com/photo 发布www.example.com/album POST www.example.com/addphototalbum?photoId={photoId}&albumId={albumId} 或者我可以这样做 2. 发布www.example.com/album/{albumId}/photo/ 但这样它会暴露我的服务器架构 或 3. 发布www.example.co

如何在RESTAPI中建模层次关系

假设我想在相册中添加照片,我可以这样做

1. 发布www.example.com/photo 发布www.example.com/album POST www.example.com/addphototalbum?photoId={photoId}&albumId={albumId}

或者我可以这样做

2. 发布www.example.com/album/{albumId}/photo/ 但这样它会暴露我的服务器架构

3. 发布www.example.com/album/addPhoto/albumId={albumId}

4. 发布www.example.com/album/addPhoto/ 使用Json字符串{“albumId”:123,“photoId”:43543}

5. 发布www.example.com/album/photo?photoId={}&albumId={}

REST Api对于CRUD操作很好,但是当涉及到如何建立关系时, 如果我们遵循面向对象的风格,那么#2就很棒。如果我们遵循数据库风格,那么#5非常好

如果我们使用的是style#2,当我们想给某张照片添加评论时,我们是否应该这样写 发布www.example.com/album/{albumId}/photo/{photoId}/comment/ 或者只是 发布www.example.com/photo/{photoId}/comment/


问:在REST中建立关系的一般做法是什么?

以下是一些有用的要点,有助于确定情况


就我个人而言,我喜欢URL很短并且能够添加书签的方式。

#2是我首选的方式。#2如何公开您的服务器体系结构?消费者如何知道您是否在重写URL。此外,如果您使用的是HATEOAS,那么URL实际上并不重要。因为你要从书签开始,所以先去相册,然后在相册上贴一张照片。