Angular4学习笔记(五):http

《Angular4从入门到实战》学习笔记(图文) 终于又找到组织了!没想到十几年过去了,优快云还是那么的坚挺!欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowcha... 阅读详情

代码已提交至Github

程序猿十大未解之谜

其实我准备原本按照教程上的写法,用angular-in-memory-web-api类伪装一个服务器。而在最开始的项目里,我也确实是这么做的。

但是后来我用webpack替换了原demo中的systemjs,一切都跑偏了。

同样的代码,在之前的项目里怎么跑都没问题;在现在的项目里,死活都是服务器地址不对。

这就是程序猿十大未接谜题之首:刚才还特么是好好的啊!

最后我实在找不到问题出在那里,只好用js再写了一个跑在node上的服务器demo。

有的时候技术突破,也是被逼无奈。不是他XX的,就是你XX的。(原谅我爆粗口)。

所以我们需要小小的转一个弯,来搞定有关node服务器上的一些东西。

nodejs服务器

git上的项目中,server目录下,就是一个小小的服务器demo,运行方式为进入文件夹后npm start。

服务器包含2个文件:
这里写图片描述

data.js是我随便写的一堆假数据(是的,服务器也是假数据,因为我还不会用mongodb)

http.js是服务器主文件。

运行起来是这个样子:
这里写图片描述
服务器监听本机4000端口,并提供2个接口:
1. http://127.0.0.1:4000/gundamlist

返回所有高达列表
1. http://127.0.0.1:4000/detail?id=xx
传入高达id,返回对应高达详情(查不到会返回空的类)

angularjs中的http

现在可以回到angular的部分,开始改造service了:

1 定义主路径

private api = 'http://localhost:4000';

2 定义2个接口

private gundamList = '/gundamlist';
private gundamDeail = '/detail';

3 使用angular中的http模块

http类在angular中的‘@angular/http’里,任何使用http之前都需要导入。以及因为http本身是一个基类要在所有组件中使用,所以需要添加到app.module.ts的imports数组里。

顺便,因为在2个component都用到了service,所以不需要特别在每一个component用provider声明,在app.module.ts声明一次就可以了(但是还需要导入和注入)。

做完之前的铺垫后,终于可以在service里用http去请求数据了。

导入http:

import { Http } from '@angular/http';

必须的toPromise

import 'rxjs/add/operator/toPromise';

在构造函数中注入:

constructor(private http: Http) {};

修改获得数据的方法:

// 获得全部数据
getGundams(): Promise<Gundam[]> {
    return this.http.get(this.api + this.gundamList)
.toPromise()
.then(response => response.json() as Gundam[])
.catch(this.handleError);
}
// 根据Id查询高达
getGundamById(id: number): Promise<Gundam> {
    return this.http.get(this.api + this.gundamDeail + '?id=' + id)
.toPromise().then( jsonStr => jsonStr.json() as Gundam)
.catch(this.handleError);
}
// 捕获异常并输出
private handleError(error: any): Promise<any> {
    console.error('An error occurred', error); // for demo purposes only
return Promise.reject(error.message || error);
}

1 http.get(url)(或者post put delete),访问服务器以后会返回一个observation对象,事实上是observation<服务器返回值>。通过toPromise转换成promise对象以后,就可以正常的使用then方法去处理返回值了。
2 通过promise的then方法,可以获得到服务器的返回值。2个返回值都是json字符串,而在angular还是先按字符串处理。调用字符串的.json()方法转化为json数组(接口1)或者json对象(接口2),继续调用关键字as将jison数组或者jison对象转化Gundam类,转化的方式是属性对应。

回到主页面,刷新
这里写图片描述
点击任意一个栏目
这里写图片描述

现在可以把假数据删除,然后测试基本流程了。

webpack打包

进入angular目录,运行打包命令:

npm run build 

这里写图片描述

打包完成

这里写图片描述

进入angular/dist文件夹内,会有如下几个文件:
这里写图片描述

复制到server目录下的assets文件夹下(没有请新建):
这里写图片描述

回到服务器目录下,启动服务器:

这里写图片描述

访问http://localhost:4000/index.html:

这里写图片描述

点击任一列表项目:

这里写图片描述

可能样子还不怎么好看,可能逻辑处理也很简单。但是至少是一个从前端到后端跑通的流程了。

避坑指南:PCIe设备兼容性那些坑——聊聊MPS/MRRS设置不当引发的血泪史 本文深入探讨了PCIe设备兼容性问题,特别是MPS/MRRS参数设置不当引发的常见故障。通过详细解析MPS(Max Payload Size)和MRRS(Max Read Request Size)的作用机制,提供Linux内核五大配置策略的对比分析,并分享FPGA加速卡等实战案例的排查经验。文章还介绍了诊断工具链、动态调试技巧以及性能优化方法,帮助工程师有效解决PCIe兼容性难题。 阅读详情

相关推荐

刷题单向链表

实现一个数据结构,维护一张表(最初只有一个元素 11)。接下来 qq 行,每行表示一次操作,操作具体间题目描述。a[i] 里面放的是下一个元素,为0代表链表结束。如单链表1->4 -> 2->3->0用数组表示是。对于每个操作 2,输出一个数字,用换行隔开。第一行一个整数 qq 表示操作次数。

power的专栏 1714

javascript作用域和预编译

作用域定义 作用域是指js代码中定义变量的区域 作用域规定了查找变量的方式,确定了当前执行代码对变量的访问权限 作用域又分全局作用域和局部作用域 全局作用域就像所有作用域的祖籍作用域,是所有局部作用域都可以访问到的,包括自己。 局部作用域可以访问的变量的权限只有祖籍作用域和自己的作用域,无法访问到自己内部的局部作用域 静态作用域 静态作用域指的是一段代码,在它执行前就已经确定了它的作用域,意思就是在执行前就确定了它可以应用哪些地方的作用域(变量) js运行代码的三个步骤 语法分析 预编译 解析执行

blc_God的博客 340

在MacBook M1/M2上,手把手教你打包包含嵌入模型的RagFlow Docker镜像(避坑指南)

本文详细指导如何在MacBook M1/M2上构建ARM64架构的RagFlow Docker镜像,涵盖环境准备、依赖处理、镜像构建及性能优化全流程。特别针对Apple Silicon芯片的兼容性问题提供解决方案,帮助开发者高效完成本地开发环境搭建。

weixin_26908317的博客 240

你不知道的JavaScript--Item34 大白话讲解Promise

去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范。作为ES6中最重要的特性之一,我们有必要掌握并理解透彻。本文将由浅到深,讲解Promise的基本概念与使用方法。ES6 Promise 先拉出来遛遛一、Promise小试复杂的概念先不讲,我们先简单粗暴地把Promise用一下,有个直观感受。那么第一个问题来了,Promise是什么玩意呢?是一个类

小平果的欢乐谷 3827

TPAMI 2025新作LRFormer复现笔记:我的Windows 11 + RTX 4090配置全流程

本文详细记录了在Windows 11系统下使用RTX 4090显卡复现TPAMI 2025顶会论文LRTransformer的完整流程,包括硬件配置、系统优化、Python环境搭建及模型训练中的常见问题解决方案。特别针对Windows平台特有的路径管理、CUDA版本冲突和显存优化等关键技术细节提供了实用指南,帮助开发者高效完成环境搭建和模型训练。

weixin_29094301的博客 411

SAP 生产订单工序删除状态撤回简介

2、我们在前台对于生产订单的状态一个是在生产订单抬头中的状态,另外一个是针对上面一直在测试的是工序的状态,这个两个状态是前台可见的状态,实际生产订单还有一个组件物料的状态,这个状态是不可见的一个状态。生产订单中的0010工序中对应的组件的栏位被标识,表示有物料分配到了0010的工序中,正常情况下0010的工序被分配了工序是不应该被删除的。将已领料的工序删除掉,导致异常的发生。当物料已领料会,用户仍然把已分配的物料的工序删除掉,导致后续业务操作过程中产生异常,如下图中所示,0010的工序被打上了删除标识。

我小时候很黑的博客 1938

angular toPromise 报错

angular6中import ‘rxjs/add/operator/toPromise’;报错 解决办法来源于stackoverflow 就是说rxjs 5.5.0-beta.5+中已经自动添加了toPromise方法不用再额外引入,并且不用Http了用HttpClient import { BrowserModule } from '@angular/platform-brows...

米斯特尔曾的博客 3465

倍福PLC--PERSISTENT断电保持数据和BOOT中各文件对应的解析

将D:\TC3程序\TwinCAT Project146\TwinCAT RT(x86)\Plc 文件夹的中三个替换文件复制到:G:\TwinCAT\3.1\Boot\Plc完成替换,如下图。(2) 找到程序所存的路径,编程电脑的D:\TC3程序\TwinCAT Project146路径下,并选择对应系统平台TwinCAT RT(x86)(3) 控制器断电,拔出内存卡,使用读卡器,在编程电脑中打开:(本次测试读卡器为G盘)(5) 开机完成后,TwinCAT自动运行,当前闪灯频率为50ms。

weixin_41883890的博客 2339

angular6利用 toPromose方法处理异步请求

在异步请求中 1、我们可以用async管道来控制,如 &lt;p&gt;{{ promise | async }}&lt;/p&gt; 2、或者直接使用Promise方法 问题场景: 一进入页面的情况下直接请求后台接口,由于他本身的特点,html的http请求会最后执行。 虽然你写的位置是在上面,他在执行的时候会直接跳过,从http中获取的参数,导致无法赋值【undifined】 使用...

Sicily_winner的博客 5504

为什么idea已经改了UTF-8还是乱码,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1575

通用具身智能仿真平台桃源2.0,三行代码定义任务,数采效率最高提升20倍

木木-具身Xbot具身知识库2025年03月13日 17:40浙江在首个“城市级”大规模仿真平台GRUtopia1.0的基础上,升级后的GRUtopia2.0凭借通用模块化框架、场景资产自动化生成、高效数据采集系统三大革新,进一步向通用化、多样化、易用化迈进。仅通过单一平台、简单代码输入,即可实现仿真环境中机器人灵活训练,提升数据采集效率,为研究者提供了“一站式”具身智能开发解决方案。

具身机器人和通用AI 817

Promise、then()、catch()详解

Promise Promise是ES6新增的引用类型,通过new来实例化时需要传入执行器函数(executor)作为参数,这个执行器函数内部可以封装异步操作。 Promise类的实例对象是有**状态(state)**的,对应三个值:pending(待定)、fullfilled(成功)、rejected(失败) (实例的初始状态为pending,一旦由pending状态落定成fulfilled状态或rejected状态,就不可再次改变,该过程是不可逆的) 与之对应,Promise类实例对象有成功的结果(val

qq_53848768的博客 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【Angular4】基础(六):HTTP模块

Angular2 HTTP 模块 在 Angular4 之前的 Angular2 中,HTTP API 方法的传参数形式如下: http.get(url: string, options?: RequestOptionsArgs): Observable&lt;Response&gt; http.post(url: string, body: any, options?: RequestOpt...

'Ablaze 的专栏 6080

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Angular 4 到 Angular6 http请求的变化

以下纯属个人学习中遇到的问题以及解决后的感悟,欢迎指点错误: 在Angular4 中 ,要用使用http请求服务器数据,应该在constructor中导入Http模块 , 如: constructor(private http: Http){}, 在使用时,使用this.http.get(url).map(res =&gt; res.json());即可,其中map 源于 'rxjs/Rx'响...

LittleDragonHu的博客 3060

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

试水新的Angular4 HTTP API

本文来自网易云社区作者:梁月康原文:https://netbasal.com/a-taste-from-the-new-angular-http-client-38fcdc6b359bAngular更新了新的 4.3.0-rc.0 版本。在这个版本里,我们可以发现更新了我们一直期待的新功能 —— 一个革新了的HTTP Client APIHttpClient 是对现存的Angular HTTP A...

jessicaiu的博客 733

angular4创建html,Angular 4 Http服务

Angular 4 Http服务HTTP服务将帮助我们获取外部数据并使用或者发布它。使用http服务前我们需要先导入http模块。让我们看一个例子。要开始使用http服务,我们需要在 app.module.ts中导入该模块,如下所示:import{BrowserModule}from'@angular/platform-browser';import{NgModule}from...

weixin_29057237的博客 284

angular4前后端分离_使用Angular v4的新HTTP客户端

angular4前后端分离With the release of Angular v4.3 in July, some new features where introduced. Among them was a new HttpClientModule, @angular/common/http replacing @angular/http. It is smaller, easier an...

culiu9261的博客 264

Angular 4 Http

英文教材 http 部分的代码 下载链接: angular4 http

ass673556617的专栏 1054

《Angular4从入门到实战》学习笔记

《Angular4从入门到实战》学习笔记 腾讯课堂:米斯特吴 视频讲座 二〇一九年二月十三日星期三14时14分 What Is Angular?(简介) 前端最流行的主流JavaScript框架; 由谷歌倾情打造并维护; 致力于构建单页面应用(SPA); 是主流MEAN综合框架中的一部分; 打破HTML静态,创建动态的WEB应用。 不是一个服务端的框架或技术;不是J...

weixin_30889885的博客 255

Angular 4入门指南:HTTP

在上一教程中,您了解了如何使用Angular路由在Angular Web应用程序中实现路由。 在本教程中,您将学习如何使用Angular HttpClient与Angular应用程序中的Web API和服务进行通信。 Angular HttpClient 您使用XMLHttpRequest(XHR)对象从浏览器进行服务器端API调用。 XHR对象使更新网页的一部分成为可能,而无需重新加...

代码教主 241

angular4拦截器的使用

不说废话直接上干货 在app-routing中: import {AuthGuard} from './_guards/auth.guard'; const routes: Routes = [ { path: '', component: HomeComponent, canActivate: [AuthGuard], children: [ xx...

weixin_38693408的博客 934

angular2学习笔记

刚参加工作接触的就是angular项目,这里做一下学习笔记,以下是自己整理的angular2基础知识脑图 标题 图太大不太清楚,可以看源文件 参考文档: 官网Angular-快速入手:https://www.angular.cn/guide/quickstart angular2权威指南书籍:https://download.youkuaiyun.com/download/yesicatt/112...

yesicatt的博客 453

Angular2 http服务

Angular2 http服务 angular2的http服务是用于从后台程序获取或更新数据的一种机制,通常情况我们需要将与后台交换数据的模块做出angular服务,利用http获取更新后台数据,angular使用http的get或put进行后台调用采用的是ajax方式,跨域问题需要单独处理。下面来看一个例子,演示从后台web api中获取数据并进行页面加载。 1、由于要使用http服

幻羽公子的博客 1415

Angular4 - http

1. http (1) 简单示例 http使用之前需要在当前导入HttpModel。然后看一个例子: //httml: Angular Orgs Members ID:{{member.id}} Name: {{member.login}} //JS: import {Component, OnInit} from '@

小蚂蚁的世界 3543
上一篇: Angular4学习笔记(四):service
下一篇: Angular4学习笔记(六):解耦
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值