【问题标题】:I can't get PUT to work in Spring Data REST我无法让 PUT 在 Spring Data REST 中工作
【发布时间】:2019-01-28 15:09:02
【问题描述】:

我正在尝试学习 Spring Data REST,但我立即陷入困境。我有两个实体,用户和事件。 User 和 Event 是一对多的关系,所以一个 User 可以有很多 Event。

@Entity
public class {
    @OneToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
    private Set<Event> events;
...
}

我有一个对应的 UserRepository

public interface UserRepository extends JpaRepository<User, Long> {
    ApplicationUser findByUsername(String username);
}

当我启动项目时,它会暴露几个端点,我尝试了这个

GET http://localhost:8080/api/users/1/events

它有效,我明白了

{
    "_embedded": {
        "events": []
    },
    "_links": {
        "self": {
            "href": "http://localhost:8080/api/applicationUsers/1/events"
        }
    }
}

然后我尝试添加一个事件

PUT http://localhost:8080/api/users/1/events (with a payload of course)

然后再次发送事件的 GET 请求,但仍然是空的。而且它似乎没有任何插入。

这应该在 Spring Data REST 中默认工作还是我错过了什么?我认为使用 @OneToMany 注释的 Set 应该可以让我向某个用户添加事件。

【问题讨论】:

    标签: rest spring-data-jpa spring-data-rest


    【解决方案1】:

    spring-data-rest中有两种形式的资源。

    在spring-data-restdocumentation中,明确提到对于一个集合资源,它只支持

    • 获取
    • 发布

    仅限。 (除了 HEAD)。

    所以在您的 "/events"(集合资源)资源中,没有 没有 PUT 端点。

    您可以通过带有自定义查询的自定义端点来执行此操作。 (不是内置端点)

    【讨论】:

      猜你喜欢
      • 2018-01-19
      • 1970-01-01
      • 2014-04-04
      • 2018-01-08
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 2021-01-24
      • 2013-01-04
      相关资源
      最近更新 更多