2016-05-11 4 views
2
私は便利なガイドの助けを借りて、GETを管理イオン2とASP.NETのAPIにPOST呼び出しを実装して少し苦労してきたが、私は本当に何かを見つけることができませんでした

私はYouTubeのビデオに出くわすまで、POSTのように。そのビデオの助けを借りて、私は私のプロバイダでこのメソッドを持っている:POSTコール2

backendlogin() { 
    if (this.data) { 
     return Promise.resolve(this.data); 
    } 

    return new Promise(resolve => { 
     var json = JSON.stringify({ email: '[email protected]', password: 'root' }); 
     var params = 'json=' + json; 
     var headers = new Headers(); 
     headers.append('Content-Type', 'application/json'); 

     this.http.post('http://insertipadresshere/api/login', 
      params, { 
       headers: headers 
      }) 
      .map(res => res.json()) 
      .subscribe(data => { 
       this.data = data; 
       resolve(this.data); 
      }, 
      error => alert(error), 
     () => console.log("Finished") 
    ); 
    }); 
} 

私のGETメソッドは、プロバイダを作成するときにイオンによって提供されたものを基本的にあります。変数が宣言され、ヘッダーが追加されている部分と、もちろんpostの代わりにhttp.getが追加されている点を除いて、このコードと似ています。

これは私がページのコントローラから、プロバイダの機能を呼び出すために使用する機能です。

setuplogin() { 
    this.backend.backendlogin() 
     .then(data => { 
      this.data = data; 
     }); 
    console.log(this.data); 
} 

今問題に上。すべてを理解していれば、何かが失敗した場合はbackendLogin()にエラーが表示されるはずです。アラートに「[object Object]」と表示されます。コンソール内の唯一のものは、データが空であるため、おそらくsetupLogin()からの空のログです。 apiは電子メールアドレスとパスワードを取ってuIDを返すべきです。誰かが私を正しい方向に向けることができますか?

答えて

3

エラーが発生した場合、私は約束を拒否します:

return new Promise((resolve,reject) => { 
    var json = JSON.stringify({ email: '[email protected]', password: 'root'}); 
    var params = 'json=' + json; 
    var headers = new Headers(); 
    headers.append('Content-Type', 'application/json'); 

    this.http.post('http://insertipadresshere/api/login', 
     params, { 
      headers: headers 
     }) 
     .map(res => res.json()) 
     .subscribe(data => { 
      this.data = data; 
      resolve(this.data); 
     }, 
     error => reject(error), 
    () => console.log("Finished") 
); 
}); 

私はそれが生の約束を作成するために必要だとは思わない、と述べました。あなたは観測のtoPromise方法活用:

var json = JSON.stringify({ email: '[email protected]', password: 'root'}); 
var params = 'json=' + json; 
var headers = new Headers(); 
headers.append('Content-Type', 'application/json'); 

return this.http.post('http://insertipadresshere/api/login', 
     params, { 
      headers: headers 
     }) 
     .map(res => res.json()); 
); 

との購読:

var json = JSON.stringify({ email: '[email protected]', password: 'root'}); 
var params = 'json=' + json; 
var headers = new Headers(); 
headers.append('Content-Type', 'application/json'); 

return this.http.post('http://insertipadresshere/api/login', 
     params, { 
      headers: headers 
     }) 
     .map(res => res.json()) 
     .toPromise(); 
); 

を終了するには、エラー

setuplogin() { 
    this.backend.backendlogin() 
    .then(data => { 
     this.data = data; 
     console.log(this.data); 
    }, error => { 
     // do something 
    }); 
} 

を取得し、あなたが直接、むしろ約束を返すより、観察を使用することができますそれsetupLogin方法で:

setuplogin() { 
    this.backend.backendlogin() 
    .subscribe(data => { 
     this.data = data; 
     console.log(this.data); 
    }, 
setuplogin() { 
    this.backend.backendlogin() 
    .subscribe(data => { 
     this.data = data; 
     console.log(this.data); 
    }, error => { 
     // do something with error 
    }); 
} 
+0

は、残念ながら、動作しませんでした。それがAPIの問題だと思いますか?私はそれ自身のコードを書いていないが、著者に連絡することができる。 – Pharetra

+1

devツール、ネットワークタブで実際に実行されているリクエストを確認できますか?それを見て参考にすることができます;-) –

+0

私は、どのようなデータが必要ですか?私は、POSTメソッドの400 Bad Requestがあることに気付きました。 – Pharetra

関連する問題