📜  AngularJS |使用 HttpClient 从 API 获取数据

📅  最后修改于: 2022-05-13 01:56:53.068000             🧑  作者: Mango

AngularJS |使用 HttpClient 从 API 获取数据

API 中有一些数据,我们的任务是使用 HTTP 从该 API 获取数据并显示它。在本文中,我们将使用 API 包含我们将获取的员工详细信息的情况。该 API 是一个假 API,其中数据以JSON (键:值)对的形式存储。
API API 代表应用程序编程接口,它是一种软件中介,允许两个应用程序相互通信。
Angular 提供HttpClient来处理 API 和轻松处理数据。在这种方法中, HttpClientsubscribe() 方法将用于获取数据。要达到问题的目标,应遵循以下步骤。

  • 第 1 步:创建必要的组件和应用程序。
  • 第 2 步:module.ts文件中对HttpClient进行必要的导入。
import { HttpClientModule } from '@angular/common/http';

@NgModule({
  declarations: [
  ],
  imports: [
    HttpClientModule,
  ],
  providers: [],
  bootstrap: []
})
  • 第 3 步:component.ts文件中对HttpClient进行必要的导入。
import {HttpClient} from '@angular/common/http';

export class ShowApiComponent implements OnInit {
  constructor(private http : HttpClient){

   } 
  }
  • 第 4 步:我们通过在get() 方法中传递 API url 然后订阅 url 从 API 获取响应
this.http.get('API url').subscribe(parameter)
  • API 的响应存储在可以访问数据的变量中。
  • 第 5 步:现在需要使用 HTML 显示数据数组。使用表,其中行是根据数据数组的大小动态添加的。为此,使用*ngFor创建行,然后显示每行的数据。

先决条件:这里您需要一个用于获取数据的API 。还可以创建一个虚假的 API 并存储数据——“https://www.mocky.io/”。
示例:例如,我们已经有一个假 API,其中包含我们将获取的员工数据
API: “http://www.mocky.io/v2/5ea172973100002d001eeada”
显示数据的步骤:

  • 第 1 步:创建所需的 Angular 应用程序和组件(此处为 show-api 组件)
  • 第 2 步:为了在我们的应用程序中使用 HttpClient,将HttpClientModule导入到app.module.ts
    app.module.ts:
javascript
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
 
 
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { AddInputComponent } from './add-input/add-input.component';
import { ShowApiComponent } from './show-api/show-api.component';
 
@NgModule({
  declarations: [
    AppComponent,
    ShowApiComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    HttpClientModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }


javascript
import { Component, OnInit } from '@angular/core';
import {HttpClient} from '@angular/common/http';
@Component({
  selector: 'app-show-api',
  templateUrl: './show-api.component.html',
  styleUrls: ['./show-api.component.css']
})
export class ShowApiComponent implements OnInit {
 
  li:any;
  lis=[];
  constructor(private http : HttpClient){
     
}
 
  ngOnInit(): void {
    this.http.get('http://www.mocky.io/v2/5ea172973100002d001eeada')
    .subscribe(Response => {
 
      // If response comes hideloader() function is called
      // to hide that loader
      if(Response){ 
        hideloader();
      }
      console.log(Response)
      this.li=Response;
      this.lis=this.li.list;
    });
    function hideloader(){
      document.getElementById('loading').style.display = 'none';}
  }}
// The url of api is passed to get() and then subscribed and
// stored the response to li element data array list[] is created
// using JSON element property


html

Registered Employees

    Loading...
                                                                                                               
NamePositionOfficeSalary
{{ e.name }}{{ e.position }}{{ e.office }}{{ e.salary }}


  • 第 3 步:在组件的 Typescript 文件中(此处为 show-api.component.ts)导入 HttpClient。 HttpClient 有助于渲染和获取数据。员工详细信息 API 用于获取数据。我们通过在 get() 方法中传递 API url 然后订阅 url 从 API 获取响应。 API 的响应存储在一个名为 li 的变量中,从中进一步将数据数组存储在一个名为 list 的数组中。列表数组将帮助我们显示数据。当响应来隐藏加载器时,将调用用户定义的函数。
    显示-app.component.ts:-

javascript

import { Component, OnInit } from '@angular/core';
import {HttpClient} from '@angular/common/http';
@Component({
  selector: 'app-show-api',
  templateUrl: './show-api.component.html',
  styleUrls: ['./show-api.component.css']
})
export class ShowApiComponent implements OnInit {
 
  li:any;
  lis=[];
  constructor(private http : HttpClient){
     
}
 
  ngOnInit(): void {
    this.http.get('http://www.mocky.io/v2/5ea172973100002d001eeada')
    .subscribe(Response => {
 
      // If response comes hideloader() function is called
      // to hide that loader
      if(Response){ 
        hideloader();
      }
      console.log(Response)
      this.li=Response;
      this.lis=this.li.list;
    });
    function hideloader(){
      document.getElementById('loading').style.display = 'none';}
  }}
// The url of api is passed to get() and then subscribed and
// stored the response to li element data array list[] is created
// using JSON element property
  • 第 4 步:现在需要使用 HTML 显示数据数组。使用表,其中行是根据数据数组的大小动态添加的。为此,使用*ngFor创建行,然后显示每行的数据。在这个文件中,我添加了一个加载器,它加载直到响应到来。
    显示-app.component.html:-

html

Registered Employees

    Loading...
                                                                                                               
NamePositionOfficeSalary
{{ e.name }}{{ e.position }}{{ e.office }}{{ e.salary }}
                   

输出:在控制台中,还可以看到响应的数据数组,进一步用于显示数据。