使用 REST 访问 JPA 数据失败 找不到合适的 HttpMessageConverter

Posted

技术标签:

【中文标题】使用 REST 访问 JPA 数据失败 找不到合适的 HttpMessageConverter【英文标题】:Accessing JPA Data with REST fails No suitable HttpMessageConverter found 【发布时间】:2015-01-22 18:50:11 【问题描述】:

我已经为此苦苦挣扎了一段时间,但找不到解决方案。我正在运行 SpringBoot 指南,使用 REST 访问 JPA 数据 (http://spring.io/guides/gs/accessing-data-rest/) 不起作用。

只需下载并运行它就可以正常运行,允许 GET 调用

http://localhost:8080/people 

使用邮递员。但是,每当我尝试 PUT 或 POST 时,我都会收到以下错误


 "cause": null,
 "message": "No suitable HttpMessageConverter found to read request body into object of type           class hello.Person from request with content type of text/plain;charset=UTF-8!"

我通过 PUT 传递的 json 是


"firstName": "Dave",
"lastName": "Something"

这只是运行原版项目,没有任何变化。许多其他的指导项目工作正常,所以我知道 MVN、Spring boot 等工作正常。

尝试了很多论坛,但没有任何建议有效。

任何帮助将不胜感激。

谢谢 戴夫

【问题讨论】:

【参考方案1】:

您的 POST 请求的内容类型为 text/plain,而服务器不知道如何将纯文本转换为 hello.Person 实例。

您需要通过将请求的 Content-Type 标头设置为 application/json 来告诉服务器您正在发送 JSON

【讨论】:

谢谢。我忘了说我在内容类型中明确发送 application/json 但 spring 似乎仍然认为它正在获取 text/plain。【参考方案2】:

我使用 Google Chrome 的 Postman 扩展程序并发送原始 JSON "firstName": "Frodo", "lastName": "Baggins" 。那行得通。

请记住指定 HTTP 标头 Content-Type: application/json

【讨论】:

【参考方案3】:

Content-Type:application/json 尝试删除 header 中 content-type:* 和 application 之间的空格。

【讨论】:

以上是关于使用 REST 访问 JPA 数据失败 找不到合适的 HttpMessageConverter的主要内容,如果未能解决你的问题,请参考以下文章

错误:找不到 Requirement.parse('rest_framework>=3.6.3') 的合适分布

加载 xdebug 安装失败 - xdebug.so,9 找不到合适的图像

使用 reactjs 从 rest api 访问数据

在较旧的 iOS 模拟器上运行时 Xcode 10 测试失败 - “无法加载测试包......找不到合适的图像”

找不到合适的服务器(`serverSelectionTryOnce` set):[TLS握手失败:错误:14090086:SSL例程:ssl3_get_server_certificate confi

为 IOS 访问/创建核心数据 slqlite 数据库失败 - 找不到实体(创建了空数据库)