如何在标头请求中传递自定义参数

时间:2019-05-29 05:38:35

标签: angular

我必须调用一个API,我需要传递用户名和密码以及标头请求。如何从角度服务中调用API?

我尝试了以下代码:

    checkUserApi(url: string): Observable<any> {    
       const headers = new HttpHeaders()      
           .set('Content-Type', 'application/json')
           .set('Accept', 'text/plain')
          .set('userName', 'username')
         .set('password', 'password');                    
    return this.http.post(url, { headers })
      .map((response: Response) => {
        console.log("response : " +response);
        return response;
      })
   }

3 个答案:

答案 0 :(得分:0)

要让$ resource .login方法在方法调用时计算标头字符串,标头配置需要具有标头属性,该标头属性的值为函数声明,而不是函数调用。

 //resources
var Authentication = $resource('/users/authentication',{},{
    login:{
        method: 'GET',
        isArray: false,
        //USE function declaration
        headers: {
           'Authentication': 
                function () {
                    return btoa(getUserCredentials())
                }
        }
        //NOT function invocation
        //headers: {'Authentication':btoa(getUserCredentials())}
    }
});

答案 1 :(得分:0)

您可以尝试这样

checkUserApi(url: string): Observable<any> {    
    const config = { headers:  {
        'Content-Type': 'application/json',
        'Accept': 'text/plain',
        "X-userName": "testUser",
        "X-password": "testPwd"
    }
  };
 return this.http.post(url, config)
      .map((response: Response) => {
        console.log("response : " +response);
        return response;
      });
}

答案 2 :(得分:0)

请检查以下内容:

 let tHeader = new Headers();
 tHeader.append('x-username', UserName);
 tHeader.append('x-password', Password);
 return this.http.post(url,{payload}, { headers: tHeaders })
  .map((response: Response) => {
    console.log("response : " +response);
    return response;
  });

this.http.post(url,{headers})--->这不是传递标头的正确方法。请检查上面的代码。

在每个发布请求中,您都应该传递有效负载。如果没有要发送的有效负载,请传递一个空对象。