api - REST API,具有关系的POST实体?

标签 api rest asp.net-web-api relationship

我有一个问题,我无法决定如何处理此问题..我需要知道是否有任何标准方法可以解决此问题..或者你们是否对此问题有任何宝贵的意见。

事实是,我已经开始构建用于学习目的的非常基本的API
该API是一个简单的音乐商店。.该商店中有一些专辑需要艺术家。

因此,“关系”是“艺术家<--- 1 ----- * --->相册”,要使相册存在,就要求该相册中有一个艺术家。但是艺术家不需要和专辑。

现在解决问题了...

由于这种关系,如果我想创建一个新专辑...。我将不得不发布专辑数据..以及整个Arist-数据..不仅是艺术家的ID ..而且是整个艺术家..如果您问我的话非常有效..因为那很多不必要的。

因此,正如我所看到的,有两种方法可以解决此问题...
要么我只是发布整个专辑数据/对象,然后允许该对象的Artist-data仅包含一个ID,然后再引用该Artist。

因此,与其发布:

{
"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/artist/{artistid}/专辑
然后只需将相册对象发布到该网址即可。

但是正如我所说..我真的不确定这里是对还是错..还是有任何标准的方法来处理这个问题?

提前致谢!

最佳答案

我建议这样的事情。

POST /musicstore/artist/343/albums

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

为艺术家343创建作为相册集合的子代的资源的 Action 隐含地创建了艺术家与相册之间的关系。无需在有效负载中指定它。

关于api - REST API,具有关系的POST实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15341788/

相关文章:

jquery - 如何在 jQuery Mobile (1.4 beta) 中更改页面?

api - 如何代表卖家使用亚马逊产品广告 API

php - 使用 curl 在现场发布数据以进行 Expedia 预订

python - 在 django rest 框架中添加 IsAuthenticatedOrReadOnly 权限

php - 如何在 rest API 中传递 token ?

c# - 有什么方法可以检查 oauth token 是否过期?

javascript - 为 Google MAPS API v3 加载 JSON 数据

c# - 使用 Portable.Licensing 许可 Asp.Net 应用程序

c# - ProxyCreationEnabled = false 是否等于 Entity Framework 中的 AsNoTracking() ?

java - 使用 HttpUrlConnection 将 JSONArray 发布到服务器