Angular 4中GET请求的Header与Body设置求助
解决Angular HTTP请求中设置请求头与请求体的问题
我看你这段代码里有几个关键小问题需要调整,先给你梳理清楚:
- Angular的
HttpHeaders是不可变对象,调用append方法后必须重新赋值给变量,不然你的头信息根本不会生效 GET请求的规范里通常不携带请求体,绝大多数后端也不会处理GET请求的body参数;如果一定要用请求体传递数据,建议改用POST请求;如果坚持用GET,更合规的方式是把参数放到URL的查询参数里- 你调用
this.http.get()时的语法有误,get方法的第二个参数是配置对象,不能直接把body作为第三个参数传进去
下面给你两种符合规范的实现方案:
方案1:使用GET请求,参数放到查询参数中
如果后端期望用GET方式接收这些参数,把auth_token、page_no等参数放到查询参数里是更标准的做法:
// 正确创建请求头:HttpHeaders不可变,append后必须重新赋值 const headers = new HttpHeaders() .append('X-API-KEY', '你的API密钥') .append('Accept', 'application/json'); // 准备查询参数 const params = new HttpParams() .set('auth_token', '你的auth-token值') .set('type', 'matrix') .set('page_no', '1') .set('page_size', '20') .set('keyword', 'j'); // 发起GET请求 return this.http.get('你的请求URL', { headers, params }) .pipe( map((response: any) => { // 处理响应数据 const resp = response; // ...你的后续业务逻辑 return resp; }) );
方案2:使用POST请求,参数放到请求体中
如果后端明确要求用请求体传递参数,直接改用POST请求即可:
// 正确创建请求头 const headers = new HttpHeaders() .append('X-API-KEY', '你的API密钥') .append('Accept', 'application/json'); // 准备请求体 const body = { auth_token: '你的auth-token值', type: 'matrix', page_no: '1', page_size: '20', keyword: 'j' }; // 发起POST请求 return this.http.post('你的请求URL', body, { headers }) .pipe( map((response: any) => { // 处理响应数据 const resp = response; // ...你的后续业务逻辑 return resp; }) );
另外补充两个小提醒:
- 如果你用的是Angular 6及以上版本,
map操作符需要放到pipe里使用(旧版本直接链式调用map也能行,但现在官方更推荐用pipe的写法) - 记得把代码里的
你的API密钥、你的请求URL等占位符替换成实际的业务值
内容的提问来源于stack exchange,提问作者BASIT ALI
相关产品推荐
相关产品推荐

