angular 网络服务 - GET

angular自带网络服务模块,可以快捷完成网络请求操作。

环境准备

运行命令ng n ngPro1 --standalone=false创建一个angular应用。
项目自动生成的package.json文件的内容为:

{
  "name": "ng-pro1",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "watch": "ng build --watch --configuration development",
    "test": "ng test"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^18.1.0",
    "@angular/common": "^18.1.0",
    "@angular/compiler": "^18.1.0",
    "@angular/core": "^18.1.0",
    "@angular/forms": "^18.1.0",
    "@angular/platform-browser": "^18.1.0",
    "@angular/platform-browser-dynamic": "^18.1.0",
    "@angular/router": "^18.1.0",
    "rxjs": "~7.8.0",
    "tslib": "^2.3.0",
    "zone.js": "~0.14.3"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^18.1.4",
    "@angular/cli": "^18.1.4",
    "@angular/compiler-cli": "^18.1.0",
    "@types/jasmine": "~5.1.0",
    "jasmine-core": "~5.1.0",
    "karma": "~6.4.0",
    "karma-chrome-launcher": "~3.2.0",
    "karma-coverage": "~2.2.0",
    "karma-jasmine": "~5.1.0",
    "karma-jasmine-html-reporter": "~2.1.0",
    "typescript": "~5.5.2"
  }
}

项目创建成功后,运行ng g c myc01命令创建一个新的组件:
在这里插入图片描述

到根组件文件中,把新生成的组件显示出来:
在这里插入图片描述

在这里插入图片描述

网络服务

加载网络服务

网络服务模块,默认是不加载的,必须手动修改配置文件进行加载。
注意:现在HttpClientModule已经废弃,改用provideHttpClient。

修改项目的app.module.ts文件:
在这里插入图片描述

在组件中使用网络服务,发起GET请求

在myc01.component.ts文件通过依赖注入、调用:
在这里插入图片描述

浏览器控制台打印了返回结果:
在这里插入图片描述

在网络中查看:
在这里插入图片描述

下面在组件中把返回的数据显示出来

组件的myc01.component.ts文件:

import { HttpClient } from '@angular/common/http';
import { Component } from '@angular/core';

@Component({
  selector: 'app-myc01',
  templateUrl: './myc01.component.html',
  styleUrl: './myc01.component.css'
})
export class Myc01Component {
  res: Result = {
    message: '',
    data: {
      channels: []
    }
  }

  // 服务需要使用依赖注入机制进行加载操作
  constructor(public http: HttpClient) { }

  ngOnInit(): void {
    const url = 'http://geek.itheima.net/v1_0/channels'

    // 发送请求
    // subscribe 订阅的是请求返回值
    this.http.get<Result>(url).subscribe(res => {
      console.log(res)
      this.res = res
    })
  }
}

// 为了vscode的代码能给出现代代码提示,则需声明类型
interface Result {
  message: string
  data: ResultData
}

interface ResultData {
  channels: ChannelItem[]
}

interface ChannelItem {
  id: number
  name: string
}

组件的myc01.component.html文件:

<p>myc01 works!</p>

<!-- 在使用网络请求的数据之前,先判断数据是存在的,再使用 -->
<div *ngIf="res">
  <p>返回消息: {{ res.message }} </p>
  <p>返回的数据条数: {{ res.data.channels.length }}</p>

  <div *ngFor="let item of res.data.channels">
    <span>{{ item.id }} --- </span>
    <span>{{ item.name }}</span>
  </div>
</div>

展示结果:
在这里插入图片描述

Angular进行网络请求有多种方式,最常用的是使用Angular的HttpClient模块。 首先,确保你的项目已经引入了`@angular/common/http`模块。然后,在你的组件或服务引入HttpClient模块: ```typescript import { HttpClient } from '@angular/common/http'; ``` 接下来,你可以在构造函数注入HttpClient服务: ```typescript constructor(private http: HttpClient) { } ``` 现在,你可以在你的组件或服务使用HttpClient来发送请求。以下是一些常见的示例: 1. 发送GET请求并获取响应数据: ```typescript this.http.get('https://api.example.com/data').subscribe( data => { console.log(data); // 处理响应数据 }, error => { console.error(error); // 处理错误 } ); ``` 2. 发送POST请求并传递数据: ```typescript const data = { name: 'John', age: 25 }; this.http.post('https://api.example.com/user', data).subscribe( response => { console.log(response); // 处理响应数据 }, error => { console.error(error); // 处理错误 } ); ``` 3. 发送PUT请求更新数据: ```typescript const data = { name: 'John', age: 30 }; this.http.put('https://api.example.com/user/123', data).subscribe( response => { console.log(response); // 处理响应数据 }, error => { console.error(error); // 处理错误 } ); ``` 以上示例只是一些常见的用法,HttpClient还提供了其他的方法和功能,比如处理请求头、设置请求参数、处理响应拦截等。你可以参考Angular官方文档来深入了解更多信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值