专栏名称: 前端大全
分享 Web 前端相关的技术文章、工具资源、精选课程、热点资讯
目录
相关文章推荐
前端早读课  ·  【第3524期】无需 CRDT 或 OT ... ·  14 小时前  
脚本之家  ·  众多大厂 Vue3 项目放弃使用 ... ·  昨天  
前端大全  ·  确定裁员了,很严重,大家做好准备吧! ·  4 天前  
51好读  ›  专栏  ›  前端大全

告别 axios,ngify 让你的 HTTP 请求更灵活、更强大

前端大全  · 公众号  · 前端  · 2025-03-09 11:36

正文

请到「今天看啥」查看全文


(默认)
给定泛型类型的 JSON 数据
'text'
字符串文本
'blob' Blob
实例
'arraybuffer'
包含原始响应字节的 ArrayBuffer

例如,您可以要求 HttpClient .jpeg 图像的原始字节下载到 ArrayBuffer 中:


http.get('/images/dog.jpg', { responseType: 'arraybuffer' }).subscribe(buffer => {
  console.log('The image is ' + buffer.byteLength + ' bytes large');
});


改变服务器状态

执行修改的服务器 API 通常需要发出 POST 请求,并在请求正文中指定新状态或要进行的更改。 HttpClient.post() 方法的行为与 get() 类似,只是第二位参数变为 body 参数:


http.post('/api/config', newConfig).subscribe(config => {
  console.log('Updated config:', config);
});

可以提供许多不同类型的值作为请求的 body ,并且 HttpClient 将相应地序列化它们:

Body type
Serialization as
string
纯文本
number
boolean Array object
JSON 字符串
ArrayBuffer
来自 buffer 的原始数据
Blob
具有 Blob 内容类型的原始数据
FormData multipart/form-data
表单数据
HttpParams
URLSearchParams
application/x-www-form-urlencoded
格式化字符串


设置 URL 参数

使用 params 选项指定应包含在请求 URL 中的请求参数。传递字面量对象是配置 URL 参数的最简单方法:


http.get('/api/config', {
  params: { filter: 'all' },
}).subscribe(config => {
  // ...
});

http.post('/api/config', body, {
  params: { filter: 'all' },
}).subscribe(config => {
  // ...
});

或者,如果您需要对参数的构造或序列化进行更多控制,则可以传递 HttpParams 的实例。


❝[!IMPORTANT] HttpParams 的实例是不可变的,不能直接更改。相反,诸如 append() 之类的可变方法会返回应用了变更的 HttpParams 的新实例。❞


const baseParams = new HttpParams().set('filter''all');

http.get('/api/config', {
  params: baseParams.set('details''enabled')
}).subscribe(config => {
  // ...
});

http.post('/api/config', body, {
  params: baseParams.set('details''enabled')
}).subscribe(config => {
  // ...
});

您可以使用自定义 HttpParameterCodec 实例化 HttpParams (构造方法中的第二个参数),该自定义 HttpParameterCodec 确定 HttpClient 如何将参数编码到 URL 中。


设置请求标头

使用 headers 选项指定应包含在请求中的请求标头。传递字面量对象是配置请求标头的最简单方法:


http.get('/api/config', {
  headers: {
    'X-Debug-Level''verbose',
  }
}).subscribe(config => {
  // ...
});

或者,如果您需要对标头的构造进行更多控制,请传递 HttpHeaders 的实例。


❝[!IMPORTANT] HttpHeaders 的实例是不可变的,不能直接更改。相反,诸如 append() 之类的可变方法会返回应用了变更的 HttpHeaders 的新实例。❞


const baseHeaders = new






请到「今天看啥」查看全文