簡體   English   中英

Angular 2我如何從發布請求中獲取響應數據

[英]Angular 2 How i get response data from Post Request

Post-Request使用新令牌從API獲取響應,我如何從Response-Data獲取令牌參數。

這不起作用...

.map {response:Response => {let token = response.json()。token}

來自請求后的響應以及來自REST-API的令牌

{ 
   { "token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE0OTc1NDAzNDgsImp0aSI6IjVVNHJLazlONThmOHVaUVZPNkNVNHBYRUR3ZGdQbFE0TWNYU3l6YnFPMzA9IiwiaXNzIjoiaHR0cDpcL1wvbG9jYWxob3N0Ojg4ODhcL2RiYW5kand0XC8iLCJuYmYiOjE0OTc1NDAzNTgsImV4cCI6MTQ5NzU0NzU1OCwiZGF0YSI6eyJ1c2VySWQiOiIzIiwidXNlck5hbWUiOiJtYXJjby5saW5rZSIsImlzQWRtaW4iOmZhbHNlfX0.NOyLSB7N4TtVv9w7dw7mPrL5MUcAVjExycCSG-iJlqHiT3mugh20kq1T2N9RrBXsHO9XsvfEfrJ7k04QOw8hYw"
}

}

login(username: string, password: string): Observable<boolean> {
    return this.http
     .post('http://localhost:8888/dbandjwt/', 
          JSON.stringify({ username: username, password: password }))
     .map( (response: Response) => {
            let data = response.json().token;  //how i get the token from response data?
            let token = data.token; 
            if (token) { 
               this.token = token;
               localStorage.setItem('currentUser', JSON.stringify({ username: username, token: token }));
       })
   }    

假設您要在組件之一中訂閱它。

服役中

....
.map((response: Response) => response.json())
.catch(......

在組件中

.subscribe(
    data => {
      localStorage.setItem('token', data.token);
......

這應該可以解決您的問題。

問題是您的json會產生解析錯誤,請先使用

.map { response: Response => { let token = response.text()}

然后僅提取響應的這一部分(您應將{{"token":"etc.."}}設為{"token":"etc.."}

{ "token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE0OTc1NDAzNDgsImp0aSI6IjVVNHJLazlONThmOHVaUVZPNkNVNHBYRUR3ZGdQbFE0TWNYU3l6YnFPMzA9IiwiaXNzIjoiaHR0cDpcL1wvbG9jYWxob3N0Ojg4ODhcL2RiYW5kand0XC8iLCJuYmYiOjE0OTc1NDAzNTgsImV4cCI6MTQ5NzU0NzU1OCwiZGF0YSI6eyJ1c2VySWQiOiIzIiwidXNlck5hbWUiOiJtYXJjby5saW5rZSIsImlzQWRtaW4iOmZhbHNlfX0.NOyLSB7N4TtVv9w7dw7mPrL5MUcAVjExycCSG-iJlqHiT3mugh20kq1T2N9RrBXsHO9XsvfEfrJ7k04QOw8hYw"
}

然后您可以使用JSON.parse(str)或您知道的任何方法將其轉換為JSON

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM