2017-01-09 6 views
0

Вот authservice логин, взятая from here:Угловое 2 http.post отправки пустого объекта

login(email: string, password: string): Observable<boolean> { 
    return this.http.post(
     apiURL + '/admin/login', 
     JSON.stringify({ email: email, password: password })) 
     .map((response: Response) => { 
      // login successful if there's a jwt token in the response 
      let token = response.json() && response.json().token; 
      if (token) { 
       // set token property 
       this.token = token; 

       // store username and jwt token in local storage to keep user logged in between page refreshes 
       localStorage.setItem('currentUser', JSON.stringify({ email: email, token: token })); 

       // return true to indicate successful login 
       return true; 
      } else { 
       // return false to indicate failed login 
       return false; 
      } 
     }); 
} 

В моем компоненте я пытаюсь подписаться так:

login() { 
    this.loading = true; 
    console.log(this.model); 
    this.authenticationService.login(this.model.email, this.model.password) 
     .subscribe(result => { 
     if(result === true) { 
      this.router.navigate(['/']); 
     } else { 
      this.error = 'Username or password is incorrect'; 
      this.loading = false; 
     } 
     }); 
    } 

Я сделал консольные журналы вдоль линии, чтобы определить, действительно ли данные передаются, и да. Все хорошо проверяется.

Кроме, передаваемые данные просто { }

По моей экспресс-консоли, это единственное, что приходит через req.body. req.headers указывает, что типы содержимого являются правильными, а именно: Content-Type: application/json

Я попытался отправить тот же самый запрос json в конечную точку API, используя POSTMan. Работает отлично.

Есть ли еще трюк Angular 2's http.post Втулка?

Что не так с кодом, указанным выше?

+0

Ok, это данные, прошло или нет? Здесь немного противоречия. С одной стороны, вы говорите, что данные передаются, с другой стороны, вы говорите, что данные просто: '{}' :) – Alex

+1

@ AJT_82 жаль путаницы. Я имею в виду, что пустой объект '{}' - это единственное, что отправляет http.post. – Rexford

+0

Что такое 'this.model'? –

ответ

4

Отправка ответа здесь, может помочь кому-то. Благодаря @cartant для указателей. Мне просто нужно было подойти поближе:

  • Мне не нужно было явно устанавливать заголовки. по умолчанию отправляет отправления Content-Type: application/json
  • I DID NOT необходимо укрепить данные для отправки.

    login(email: string, password: string): Observable<boolean> { 
    // this is optional 
    // let headers = new Headers({ 'Content-Type': 'application/json' }); 
    // let options = new RequestOptions({ headers: headers }); 
    
    return this.http.post(
        apiURL + '/admin/login', 
        { email: email, password: password }, 
        // options 
        ) 
        .map((response: Response) => { 
         // login successful if there's a jwt token in the response 
         let token = response.json() && response.json().token; 
         if (token) { 
          // set token property 
          this.token = token; 
    
          // store username and jwt token in local storage to keep user logged in between page refreshes 
          localStorage.setItem('currentUser', JSON.stringify({ email: email, token: token })); 
    
          // return true to indicate successful login 
          return true; 
         } else { 
          // return false to indicate failed login 
          return false; 
         } 
        }); 
    } 
    
Смежные вопросы