我正在使用带有Angular 4的angular-cli来开发带有Spring Boot 1.5.2.RELEASE后端的小应用程序。
当我使用http.post
时,服务器接收带有附加字符 (]
) 的 HTTP 正文,这会导致反序列化异常。Chrome 开发者工具会显示没有它的请求。到目前为止,其他 HTTP 请求方法仍未使用。
我的 Spring Boot 后端通过 HTTP POST 得到的结果是这样的:
{
"id": "1111",
"customer": "acustomer",
"date": "1950-01-01",
"duration": "0"
}]
它应该是什么:
{
"id": "1111",
"customer": "acustomer",
"date": "1950-01-01",
"duration": "0"
}
我尝试的第一件事是使用JSON.stringify(...)
发送我的实体,但添加]
也在那里。
this.http.post('/api/work', JSON.stringify(entity))...
第二个想法是代理添加了它。对于开发建议,我通过proxy.conf.json文件配置了一个代理。当我使用ng build
构建应用程序并从 Spring 引导服务器提供它时,发生了同样的问题。
proxy.conf.json
{
"/api/*": {
"target": "http://localhost:8080",
"changeOrigin": true,
"secure": false,
"logLevel": "debug"
}
当我在 Angular 4 中使用 HTTP GET 时,每个 GET 请求都有一个带有单个]
的主体。
我用谷歌搜索了一段时间,但我找不到任何东西。
问题不在于我过于关注的 Angular 2 代码。它在我的 Java 代码中,我使用了注释@RequestParam
而不是@RequestBody
。
记录器仍显示其他]
,但不会引发反序列化异常。
似乎您在前端没有问题,因为您在开发人员工具中的数据中没有看到任何问题。 尝试将consumes
属性添加到控制器的RequestMapping
:
@RequestMapping(value = "/something", headers = "content-type="application/json", consumes = "application/json")
这应该修剪该字符