我使用Restler库作为IONIC项目的Rest客户端来使用Notejs API, 目标是使用Restler而不是Angularjs的Http服务:
我试过这种方式:
let options = { headers: {'Authorization':[this.token]}};
restler.get('http://localhost:8083/api/auth/protected', JSON.stringify(options ) ).on('complete', function(result, response) {
if (result instanceof Error) {
reject(result);
} else {
resolve(result);
}
});
这种方式返回:结果“未经授权”
angular / Http方式:
let headers = new Headers();
headers.append('Authorization', this.token);
this.http.get('http://localhost:8083/api/auth/protected', {headers: headers})
.subscribe(res => {
resolve(res);
}, (err) => {
reject(err);
});
然后返回:{"_body":"{\"content\":\"Success\"}","status":200,"ok":true,"statusText":"OK","headers":{"Content-Type":["application/json; charset=utf-8"]},"type":2,"url":"http://localhost:8083/api/auth/protected"}
我已经尝试使用Restler get方法来使用没有参数的restful API并且它工作,我认为参数Options(headers)没有正确传递
答案 0 :(得分:2)
我建议使用needle作为Rest API客户端,而不是使用restler
我已经过测试,效果很好,与@ angular / http服务完全相同,
例如:
@ angular / http实现:
return new Promise((resolve, reject) => {
let headers = new Headers();
headers.append('Content-Type', 'application/json');
this.http.post('http://localhost:8083/api/auth/login', JSON.stringify(credentials), {headers: headers})
.subscribe(res => {
resolve(data);
resolve(res.json());
}, (err) => {
reject(err);
});
});
针实施:
return new Promise((resolve, reject) => {
let options = {
headers: { 'Content-Type': 'application/json' }
}
needle.post('http://localhost:8083/api/auth/login', credentials, options, function(err, resp) {
if (!err && resp.statusCode == 200){
resolve(resp.body);
}else{
reject(err);
}
});