繁体   English   中英

如何在 Angular 中自动检测内容类型

[英]How to detect content-type automatically in Angular

在我的 Angular 9 应用程序中,我试图为我所做的每个不同的 HTTP 请求自动设置内容类型。

Angular 文档中,我发现了这个detectContentTypeHeader方法,但似乎效果不佳。 以我为例,对于这种类型的身体:

{"username":"admin","password":"pwd","tenant":"12345"}

它检测text/plain而不是application/json ,但正文是正确的 JSON,所以我错了吗? 有没有办法自动完成,或者我需要为每个请求设置它? (我已经在使用拦截器了)

多部分/表单数据

如果您传入object而不是string作为请求正文,它将检测为application/json

将字符串检测为text/plain的原因写在源代码

从技术上讲,字符串可能是 JSON 数据的一种形式,但假设它们是纯字符串是足够安全的

如果由于某种原因您仍想将字符串检测为有效的 JSON 您可以执行以下操作:

let contentType = req.detectContentTypeHeader();

if (typeof req.body === 'string') {
  try {
    JSON.parse(req.body);
    contentType = 'application/json';
  } catch {}
}

req = req.clone({ headers: req.headers.set('content-type', contentType) });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM