如何使用Restler Rest客户端库而不是Angular / HTTP

时间:2017-01-04 15:09:04

标签: node.js angular rest http-headers

我使用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)没有正确传递

1 个答案:

答案 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);

    }
    });