我必须调用一个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;
})
}
答案 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})--->这不是传递标头的正确方法。请检查上面的代码。
在每个发布请求中,您都应该传递有效负载。如果没有要发送的有效负载,请传递一个空对象。