如何在/ shelves / 1 / books中添加“书”

乔德

我不知道如何做应该非常简单的事情。

我有两个实体:书架和书本。一个书架可以有一个或多个书。这些实体中的每个实体都有一个相应的JpaRepository,使用Spring Data Rest可以将其公开为rest仓库。当我运行该应用程序时,所有查询端点都可以正常运行,但是我不知道如何将书添加到书架上。

首先,我通过将{“ name”:“ westerns”}张贴到/ shelves来添加一个架子(工作正常)。

方法1:我尝试通过将{“ name”:“ mybook”}张贴到/ shelves / 1 / books来添加一本书,但出现405错误“方法不允许”。我只能将一本书发布到/ books端点(我的意思是不编写自己的控制器)吗?如果是这样,我是否必须嵌入该书所属的书架实体?

方法2:如果我尝试通过使用内容{“ name”:“ westerns”,“ books”:[{“ name”:“ mybook”}]}对/ shelves / 1进行PUT来添加一本书,返回以下错误消息:

消息:“无法读取JSON:模板不能为null或为空!(通过引用链:org.demo.Shelf [“ books”]));嵌套异常为com.fasterxml.jackson.databind.JsonMappingException:模板不得为null或为空(通过引用链:org.demo.Shelf [“ books”])

statcktrace:

2014-11-06 06:55:18.864错误9888 --- [nio-8080-exec-5] sdrwAbstractRepositoryRestController:无法读取JSON:模板不能为null或为空!(通过参考chan:org.demo.Shelf [“ books”]);嵌套的异常是com.fasterxml.jackson.databind.JsonMappingException:模板不能为null或为空!(通过参考链:org.demo.Shelf [“ books”])

org.springframework.http.converter.HttpMessageNotReadableException:无法读取JSON:模板不能为null或为空!(通过参考链:org.demo.Shelf [“ books”]);嵌套异常是com.fasterxml.jackson.databind.JsonMappingException:模板不能为null或为空!(通过参考链:org.demo.Shelf [“ books”]),位于org.springframework.http.converter.json.MappingJackson2HttpMessageConverter上的org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readJavaType(MappingJackson2HttpMessageConverter.java:228)上。 org.springframework.data.rest.webmvc.config.PersistentEntityResourceHandlerMethodArgumentResolver的org.springframework.http.converter.AbstractHttpMessageConverter.read(AbstractHttpMessageConverter.java:159)的readInternal(MappingJackson2HttpMessageConverter.java:212)。run(Thread.java:745)原因:com.fasterxml.jackson.databind.JsonMappingException:模板不能为null或为空!(通过参考链:org.demo.Shelf [“ books”]),位于com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:232)处。 com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapAndThrow(BeanDeserializerBase.java:1420)处com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:244)处com.fasterxml.jackson.java .jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:118)位于com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2993)位于com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper .java:2158),位于org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readJavaType(MappingJackson2HttpMessageConverter.java:225)...省略了38个常见框架原因:java.lang.IllegalArgumentException:模板不得为null或为空!在org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module $ UriStringDeserializer上的org.springframework.hateoas.UriTemplate。(UriTemplate.java:56)上的org.springframework.hateoas.UriTemplate。(UriTemplate.java:56)上。在com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(Collection.com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:227)处进行deserialize(PersistentEntityJackson2Module.java:380) java:204),位于com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer。

这是所有相关的代码(当然,每个类都在其自己的文件中)。

@Entity
public class Shelf {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    private String name;

    @OneToMany
    private List<Book> books;

    public List<Book> getBooks() {
    return books;
    }

    public void setBooks(List<Book> books) {
    this.books = books;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

}

@Entity
public class Book {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


}

@RepositoryRestResource
public interface BookRepository extends JpaRepository<Book, Long>{

}

@RepositoryRestResource
public interface ShelfRepository extends JpaRepository<Shelf, Long>{

}

我正在使用Spring Boot 1.1.8.RELEASE

一个更好的奥利弗

Book实体拥有自己的REST端点,并创建一个你必须张贴到端点。

要将书放在架子上,您必须将该书的URI发送到关联URI(/shelves/{id}/books)。令人惊讶的是,文档有错误,并且添加项目不是通过POST而是通过PATCH完成:

PATCH http://localhost:8080/shelves/1/books
Content-Type: text/uri-list 
http://localhost:8080//books/1

您可以一次添加多本图书,每行一个URI。如果您不想添加书籍,而是将书架上的所有书籍替换为新书籍,即替换整个书籍,则可以使用PUT。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将“书”添加到/ shelves / 1 / books

来自分类Dev

如何在Mendeley中为“书”条目添加“系列”属性

来自分类Dev

如何在排序列中添加+1

来自分类Dev

如何在prestashop中的畅销书项目中添加另一行

来自分类Dev

如何在DateTime变量中添加1个月?

来自分类Dev

如何在Ubuntu 10.04中添加RAID 1阵列?

来自分类Dev

如何在Excel的最新重复行中添加1?

来自分类Dev

如何在Nuget的install.ps1中添加PreBuildEvent

来自分类Dev

如何在1行中参考弱?

来自分类Dev

如何在1行中全部设置

来自分类Dev

如何在Erlang中打印嵌套列表:[[1],[1、1],[1、1、1]]?

来自分类Dev

如何在-1和1之间在熊猫中缩放数据

来自分类Dev

如何在Extbase中更新1:1关系

来自分类Dev

MS Access:如何在1个查询中向表中添加多行

来自分类Dev

如何在yii 1中进行自动完成时在源中添加数组

来自分类Dev

如何在R Studio中向向量中的每个值添加1分钟?

来自分类Dev

每次单击按钮时,如何在选项卡的文本中添加1?在JavaFX中

来自分类Dev

如何在UISearchBar TextField周围添加1像素的灰色边框

来自分类Dev

如何在yii 1的blackboot主题中添加菜单

来自分类Dev

如何在yii 1的blackboot主题中添加菜单

来自分类Dev

如何在Django中获得同一作者的书

来自分类Dev

如何在python中添加到numpy数组的第k + 1个元素?

来自分类Dev

如何在GWT的UiBinder中将StyleNames“多个CSS类”添加到1个元素中?

来自分类Dev

如何在SQL查询的SQL Server列中添加一(+1)

来自分类Dev

如何在点击的javascript中将1添加到输入字段中的值?

来自分类Dev

如何在Keras或Tensorflow中将L1范数添加到损失函数中?

来自分类Dev

如何在数据框范围内的列中添加1

来自分类Dev

如何在pytorch中的权重上添加L1或L2正则化

来自分类Dev

如何在Google表格/ Excel的范围内的每个单元格中添加1

Related 相关文章

  1. 1

    如何将“书”添加到/ shelves / 1 / books

  2. 2

    如何在Mendeley中为“书”条目添加“系列”属性

  3. 3

    如何在排序列中添加+1

  4. 4

    如何在prestashop中的畅销书项目中添加另一行

  5. 5

    如何在DateTime变量中添加1个月?

  6. 6

    如何在Ubuntu 10.04中添加RAID 1阵列?

  7. 7

    如何在Excel的最新重复行中添加1?

  8. 8

    如何在Nuget的install.ps1中添加PreBuildEvent

  9. 9

    如何在1行中参考弱?

  10. 10

    如何在1行中全部设置

  11. 11

    如何在Erlang中打印嵌套列表:[[1],[1、1],[1、1、1]]?

  12. 12

    如何在-1和1之间在熊猫中缩放数据

  13. 13

    如何在Extbase中更新1:1关系

  14. 14

    MS Access:如何在1个查询中向表中添加多行

  15. 15

    如何在yii 1中进行自动完成时在源中添加数组

  16. 16

    如何在R Studio中向向量中的每个值添加1分钟?

  17. 17

    每次单击按钮时,如何在选项卡的文本中添加1?在JavaFX中

  18. 18

    如何在UISearchBar TextField周围添加1像素的灰色边框

  19. 19

    如何在yii 1的blackboot主题中添加菜单

  20. 20

    如何在yii 1的blackboot主题中添加菜单

  21. 21

    如何在Django中获得同一作者的书

  22. 22

    如何在python中添加到numpy数组的第k + 1个元素?

  23. 23

    如何在GWT的UiBinder中将StyleNames“多个CSS类”添加到1个元素中?

  24. 24

    如何在SQL查询的SQL Server列中添加一(+1)

  25. 25

    如何在点击的javascript中将1添加到输入字段中的值?

  26. 26

    如何在Keras或Tensorflow中将L1范数添加到损失函数中?

  27. 27

    如何在数据框范围内的列中添加1

  28. 28

    如何在pytorch中的权重上添加L1或L2正则化

  29. 29

    如何在Google表格/ Excel的范围内的每个单元格中添加1

热门标签

归档