虽然使用Angular HttpClient
post
,但似乎默认是将响应视为JSON字符串。当响应正文为空时,即使空字符串""
失败JSON.parse()
,这也会导致201响应出错。
解决方案是将responseType: "text"
指定为附加选项,以便将空正文不视为错误。
但是,当请求失败(即成功时为空,错误时为JSON)时,API端点确实会以JSON返回错误描述()。
您如何构造HttpClient
post
,以便在错误消息对象失败且成功不算作错误时可以找回错误消息对象?
例如:
.subscribe(() => {
// do something for success, no return object as the body is empty
, error => {
// do something with the returned error object
// right now success is still counted as an error due to the issue above
}
);
答案 0 :(得分:1)
返回的响应代码为200
或201
且其响应正文为空且指定为Content-Type
的{{1}}的服务器是错误配置的,因为空字符串不是有效的JSON。
如OP所示,指定application/json
可解决此错误,因为未将空主体解析为JSON。
一种解决方法是继续进行responseType: "text"
并检查响应正文是否为空。如果响应主体不为空,则调用responseType: "text"
。
JSON.parse(response)