Angular 2 我如何从 Post 请求中获取响应数据
Angular 2 How i get response data from Post Request
Post-请求使用新令牌从 API 获取响应,我如何从响应数据中获取令牌参数。
这不起作用...
.map { response: Response => { let token = response.json().token }
来自 post 的响应-使用 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
Post-请求使用新令牌从 API 获取响应,我如何从响应数据中获取令牌参数。
这不起作用...
.map { response: Response => { let token = response.json().token }
来自 post 的响应-使用 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