Angular HttpClient为什么用“↵”替换“ \ n”

时间:2019-06-09 04:31:15

标签: json angular angular-httpclient

发送带有HttpClient的POST正文,该HttpClient可以是字符串,也可以是具有字符串作为值的对象,它将用“↵”替换任何出现的“ \ n”。这主要是在Chrome 73中发生的。在firefox中,在检查器中查看“网络”呼叫时,似乎“↵”显示为“”。

我尝试使用JSON.stringify和JSON.parse并将“↵”替换为“ \ n”,但无济于事。

Stackblitz:https://stackblitz.com/edit/angular-uzxank

我希望浏览器检查器中显示的POST请求正文使用“ \ n”而不是“↵”。

1 个答案:

答案 0 :(得分:1)

这并不是Angular的HTTP客户端所独有的。这只是Chrome格式化字符串中换行符显示的方式。

查看下面的演示。

document.getElementsByTagName('button')[0].onclick = () => 
fetch('https://jsonplaceholder.typicode.com/posts', {
    method: 'POST',
    body: JSON.stringify({
      title: 'title',
      body: 'foo\nbar',
      userId: 1
    }),
    headers: {
      "Content-type": "application/json; charset=UTF-8"
    }
  })
  .then(response => response.json())
  .then(json => console.log(json))
Open Dev Tools. Then click:<br>
<button>click me</button><br>
Now check the HTTP call (the one with 201) in the networks tab<br>
Notice the line break is still shown as "↵" in Chrome.<br>
Notice also that the "\n" is properly transmitted, as shown by the response object's "body" field.