想要从已登录的特定人员的RESTAPI中获取数据

时间:2019-07-18 11:18:40

标签: angular typescript

我是Angular的初学者。我有一些数据存储在REST API中,该API返回JSON数据,我可以毫不费力地获取它。但是,现在我创建了一个登录页面,仅输入用户名。我想要做的是获取通过该登录页面登录的人的数据,而忽略其他数据

电子邮件我存储在变量中。但是我在这里面临的挑战是我不知道如何处理HTTPCLIENT为我提供特定电子邮件的数据。

dataservice.Service.ts

import { Injectable } from '@angular/core';
import { HttpClient, HttpResponse, HttpErrorResponse } from '@angular/common/http';
import { Configuration } from "./app.constants";
import { Observable } from 'rxjs/Observable';
import { userdata } from "./tables/data";
import "rxjs/add/operator/catch";
import "rxjs/add/observable/throw";




@Injectable({
  providedIn: 'root'
})
export class DataserviceService {

  private _actionUrl:any;
  constructor(private http: HttpClient,private configuration:Configuration) {
    this._actionUrl=configuration.serverWithApiUrl;
   }

   public getAll(email: any): Observable<userdata[]> {
     return this.http.get<userdata[]>(this._actionUrl,).catch(this.errorHandler);

}

errorHandler(error:HttpErrorResponse){
return Observable.throw(error.message ||"Server Error")
}
}

Tables.Component.ts

ngOnInit() {

    this.service.getAll(this.email).subscribe(data => this.headerRow = data,
      error => this.errorMsg = error);
    this.service.getAll(this.email).subscribe(data1 => this.dataRows = data1,
      error => this.errorMsg = error);
}

Tables.component.html

table class="table table-hover table-striped">
                  <thead>
                    <tr>
                      <th *ngFor="let daata of headerRow">
                           {{daata.id}}
                        </th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>

                      <td *ngFor="let daata of dataRows">
                        {{daata.id}}
                        {{daata.phone}} 
                        {{daata.role}} 
                        {{daata.email}} 
                        {{daata.city}} 
                        {{daata.firstName}}
                        {{daata.lastName}}
                      </td>

                      <td><i class="fa fa-edit" data-toggle="modal" data-target="#content"></i></td>
                      <td><i class="fa fa-history" data-toggle="modal" data-target="#update"></i></td>

                    </tr>


                  </tbody>
                  <br>

                </table>

data.ts(接口)

export interface userdata{
    id: Number,
    phone: Number,
    email:any,
    city:string,
    role:string,
    firstName:string,
    lastName:string
}

2 个答案:

答案 0 :(得分:0)

首先,您必须在服务类中创建一个BehaviorSubject。它将具有最新值。

std::string path = std::cin;
for (auto& file : fs::recursive_directory_iterator(path)) 
    {
           do your stuff
    }

现在订阅可观察的getEmail()

答案 1 :(得分:0)

我认为您想为此使用凭据。通过身份验证后,您完全不应发送已登录人员的电子邮件,请认为,如果这样做,那么知道您的电子邮件的任何人都可以通过向API发送正确的请求来访问您的数据。例如,您可以创建令牌并在API端管理凭据,因此该API仅基于特权发送信息。这样,您可以简化通信并避免信息泄漏。