相关疑难解决方法(0)

REST api,POST实体与关系?

我有一个问题,我不能决定如何处理这件事..我需要知道是否有任何标准的方法来解决这个问题......或者如果你们对这件事有任何重要的意见.

问题是我已经开始构建一个非常基本的API用于学习目的API是一个简单的音乐商店..商店有一些需要和艺术家的相册.

因此,关系是艺术家<--- 1 -----*--->专辑,并且对于专辑而言,要求专辑具有艺术家.但艺术家并不需要和专辑.

现在问题......

由于这种关系,如果我想创建一个新的专辑..我将不得不发布专辑数据..和整个Arist数据..不仅仅是艺术家的ID ..但整个艺术家......似乎没有如果你问我我非常有效..因为那很多不必要的.

因此,我认为有两种方法可以解决这个问题...要么我只发布整个相册数据/对象,并允许对象的艺术家数据只包含一个ID,然后引用艺术家.

所以不是张贴:

{
"Name":"AlbumName",
"Description":"Some description for the album",
"ReleaseYear": "1992",
"Artist" {
    "Name":"Some artist",
    "Id":"12345",
    "Biography":"Lorem ipsum dolor sit amet"
    }
}
Run Code Online (Sandbox Code Playgroud)

我会这样做:

{
    "Name":"AlbumName",
    "Description":"Some description for the album",
    "ReleaseYear": "1992",
    "Artist" {
        "Id":"12345"
        }
    }
Run Code Online (Sandbox Code Playgroud)

选项二是实际上有一个特定于此的路由/网址...例如:/ api/artist/{artistid}/album然后只需将一个相册对象发布到该网址即可.

但正如我所说..我真的不确定这里是非是对错..还是有任何标准的处理方式?

提前致谢!

api rest relationship asp.net-web-api

9
推荐指数
1
解决办法
4650
查看次数

处理@RepositoryRestResource中的m-to-n关系

前言

我想在一次调用中创建另一个资源的子资源.这些资源具有以下@ManyToMany关系:用户和组.

首先要创建一个用户,则该组并因为它显示在关系后,用关系在春季数据REST工作 -只是因为我认为不能单独存在,比如一组资源,应该仅当至少一个用户也与该资源相关联时才会创建.为此,我需要像这样的一个端点(这对我不起作用,否则我不会在这里)创建一个组,并在一个事务中设置关联的"种子"用户.

目前,使这项工作的唯一方法是手动"同步"关系,如下所示:

public void setUsers(Set<AppUser> users) {
    users.forEach(u -> u.getGroups().add(this));
    this.users = users;
}
Run Code Online (Sandbox Code Playgroud)

这将允许我

POST http://localhost:8080/groups

{
  "name": "Group X",
  "users": ["http://localhost:8080/users/1"]
}
Run Code Online (Sandbox Code Playgroud)

但我的问题是,这对我来说感觉不对 - 它看起来似乎是一种解决方法,而不是实际的Spring方式使这个要求工作.那么......


我目前正在努力使用Spring创建关系资源@RepositoryRestResource.我想创建一个新组并将其与调用用户关联,如下所示:

POST http://localhost:8080/users/1/groups

{
  "name": "Group X"
}
Run Code Online (Sandbox Code Playgroud)

但唯一的结果就是回应204 No Content.我不知道为什么.这可能与我的另一个问题(见这里)有关,也可能没有,我试图通过在JSON有效载荷中设置相关资源来实现同样的目标 - 这也不起作用.

服务器端我收到以下错误:

tion$ResourceSupportHttpMessageConverter : Failed to evaluate Jackson deserialization for type [[simple type, class org.springframework.hateoas.Resources<java.lang.Object>]]: java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)

如果您需要任何特定代码,请告诉我.

试着

我添加exported = …

spring jackson spring-data-jpa spring-data-rest

5
推荐指数
1
解决办法
485
查看次数