首页 > 其他分享 >angular入门篇8----Http模块的使用(2):使用接口

angular入门篇8----Http模块的使用(2):使用接口

时间:2022-10-28 23:23:04浏览次数:56  
标签:src Http app ts ---- 入门篇 import http model

angular入门篇8----Http模块的使用(2):使用接口

1.创建Http服务

1.1 注册HttpClientModule模块

我们需要在model.module.ts中注册HttpClientModule模块:
\Store\src\app\model\module.model.ts
img

1.2 创建http服务

随后,创建一些http服务:

\Store\src\app\model下创建:rest.datasourse.ts

import { Injectable } from "@angular/core";
import { HttpClient } from "@angular/common/http";
import { Observable } from "rxjs";
import { Product } from "./product.model";
import { Order } from "./order.module";

const PROTOCOL = "http";
const PORT = 3500;

@Injectable()

export class RestDataSource {
    baseUrl : string;
    auth_token : string|null =null;

    constructor(public http: HttpClient){
        this.baseUrl = `${PROTOCOL}://${location.hostname}:${PORT}/`;
    }

    
    getProducts(): Observable<Product[]> {
        return this.http.get<Product[]>(this.baseUrl+"products");
    }

    saveOrder(order: Order): Observable<Order> {
        return this.http.post<Order>(this.baseUrl+"order",order);
    }

}

tip:记得在module.model.ts中注册RestDataSource模块,这里就不重复了。

Angular中http的使用是与rxjs的Observable绑定的,作者尚未对所谓"订阅者模式"有很深刻的理解,所以这里只是奉上代码。

需要提一下的是,《Angular5》中作者是使用request方法代替上述的post、get方法的。但request方法写得很宽泛,返回类型是"Product[] | Order[]",但目前的typescript似乎不支持这种写法,因此博主将代码改写成了上面的写法。

1.3 代替原先的静态数据

\Store\src\app\model\order.repository.ts
img
\Store\src\app\model\product.repository.ts
img

最后我们在Checkout.component.ts中打印一下订单:

\Store\src\app\store\checkout.component.ts
img

2. 效果展示

此时我们运行项目,就可以看到被替换的数据:
img
img
img

标签:src,Http,app,ts,----,入门篇,import,http,model
From: https://www.cnblogs.com/feoandcode/p/16837809.html

相关文章

  • 浙江理工大学入队200题——9J
    问题J:零基础学C/C++99——青年歌手大奖赛_评委会打分题目描述青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请......
  • 每日算法4:计算字符串中的字节数;正则匹配
    匹配输入的字符:以字母或_开头,后面由数字字母_组成长度为5-20的字符串varreg=/^[a-bA-B_][a-bA-B0-9_]{4,19}/varname1='abb'console.log(reg.test(name1)......
  • Error updating database. Cause: java.sql.SQLException: Field 'id' doesn't have
    我想着id(主键)不填写的话可以在增加数据的时候可以自动添加上,且递增的,但是在添加数据的时候却报错了Errorupdatingdatabase. Cause:java.sql.SQLException:Field'i......
  • wget: unable to resolve host address解决方法
    利用wget下载东西时,比如输入指令wgetwww.baidu.com提示报错“wget:unabletoresolvehostaddress…”wget:无法解析主机地址。这就能看出是DNS解析的问题解决办......
  • 实验6:开源控制器实践——RYU
    (一)基本要求1.搭建所示SDN拓扑,协议使用OpenFlow1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑。构建拓扑sudomn--topo=single,3--mac--controller=remote,ip......
  • 实验6:开源控制器实践——RYU
    一、实验目的能够独立部署RYU控制器;能够理解RYU控制器实现软件定义的集线器原理;能够理解RYU控制器实现软件定义的交换机原理。二、实验环境Ubuntu20.04Desktopamd6......
  • 【操作系统-进程】PV操作——吸烟者问题
    目录吸烟者问题解题步骤Step1.有几类进程Step2.用中文描述动作Step3.添加PV操作,用中文描述里面的操作Step4.检查是否出现死锁Step5.定义信号量网上的代码(与王......
  • 开源Linux拥抱车载娱乐系统
    AppleCarPlay和AndroidAuto已经开始角力争夺车载娱乐系统市场,而现在开源Linux在也开始在该领域中发力。AutoMotiveGradeLinux(AGL)项目宣布UnifiedCodeBase2.0,致力于......
  • 2022年 10月28 日 学习第一天
    注释书写注释是非常好的习惯,必须坚持下去、 平时写代码一定要注意规范 Java中的注释有三种单行注释——在新的一行,用//后面跟着注释。只能注释一行文字多行......
  • Salesforce LWC学习(四十) dynamic interaction 浅入浅出
    本篇参考:ConfigureaComponentforDynamicInteractionsintheLightningAppBuilder-SalesforceLightningComponentLibrarySalesforceHelp|ArticleGitHub......