REST API,人际关系POST实体?(REST api, POST entity with re

2019-07-21 08:14发布

林有一个问题,我不能决定如何在这个问题上procced ..和我需要知道,如果有解决这个任何标准方式..或者,如果你们有这方面的任何巨大投入。

事情是,我已经开始建立学习目的的API是一个简单的音乐商店..一个非常基本的API,其中店内有哪些需要一些专辑和艺术家。

因此,关系是艺术家<--- 1 ----- * --->专辑和专辑存在的要求,这张专辑有一个艺术家。 但艺术家犯规需要和专辑。

现在的问题...

由于这似乎没有这种关系,如果我想创建一个新的专辑。我不得不发布专辑数据..和整个ARIST-data..not个艺术家的只是ID ..但整个艺术家..非常有效,如果你问我..因为这一大堆不必要的。

所以,在我看来有两种方法可以解决这个......任我只是张贴了整张专辑数据/对象,并允许艺术家数据的对象只包含一个ID,然后参照艺术家。

因此,而不是发帖:

{
"Name":"AlbumName",
"Description":"Some description for the album",
"ReleaseYear": "1992",
"Artist" {
    "Name":"Some artist",
    "Id":"12345",
    "Biography":"Lorem ipsum dolor sit amet"
    }
}

我这样做:

{
    "Name":"AlbumName",
    "Description":"Some description for the album",
    "ReleaseYear": "1992",
    "Artist" {
        "Id":"12345"
        }
    }

选项号二是实际上有一个路径/ URL那具体该...例如:/ API /艺术家/ {} artistid /相册,然后简单地张贴一张专辑对象到该网址..

但正如我所说..我真的不知道什么的对与错在这里..还是有处理这个任何标准的方式?

提前致谢!

Answer 1:

我建议这样的事情。

POST /musicstore/artist/343/albums

{
    "Name":"AlbumName",
    "Description":"Some description for the album",
    "ReleaseYear": "1992",
}

创建资源作为专辑集合了艺术家343的孩子的行为暗中创建的艺术家和专辑之间的关系。 没有必要在有效载荷来指定。



Answer 2:

我认为,这两个选项是正确的,就看你用哪一个。 第二个是更像HATEOAS 。



Answer 3:

专辑和艺术家是两个独立的实体,就不应发布的所有艺术家的数据到相册中,只是它的ID。 因此首先要创建艺术家如果不存在的话,以后你发布的专辑细节,artist_id是它的一个属性。



文章来源: REST api, POST entity with relationships?