正文
'text'
'blob'
Blob
'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
将相应地序列化它们:
|
|
string
|
|
number
、
boolean
、
Array
或
object
|
|
ArrayBuffer
|
|
Blob
|
|
FormData
|
multipart/form-data
|
HttpParams
|
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