为什么 expectPUT/POST/etc 将请求主体表示为字符串?

Why does expectPUT/POST/etc represent request bodies as a string?

查看$httpbackend的API,我们可以看到像expectPut这样的函数最多可以接受4个参数。第二个参数可以是一个带有 1 个参数的函数:一个字符串。此字符串表示 HTTP 请求的主体。

但为什么是字符串呢? JSON 不是更有意义吗? Angular 需要将正文作为字符串而不是 JSON 还给我有技术原因吗?

HTTP 请求正文 字符串,以任何其他方式表示它们真的没有意义。

在这种情况下,您可能将对象传递给函数,但在真正的网络请求中,它不会作为对象发送到服务器,而是对象的字符串表示形式。同样,它可以是任何其他字符串 - angular 无法解析任何给定字符串并将其作为对象传递给回调。

没有什么能阻止您将您的请求序列化为字符串(或让 angular 在内部执行),然后在回调函数中将其解析为 JSON,如果这是您所期望的。