- 浏览: 79604 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (98)
- Linux (6)
- vsftpd vsftp ftp (2)
- perl flock (1)
- ajax (1)
- highcharts (1)
- http://www.bejson.com/knownjson/webInterface/ (1)
- mysql (1)
- iOS研究框架之SDwebimage原理 (1)
- oepn ssl (1)
- mysql插入时间戳列 (1)
- mysql pool (1)
- gsoap (1)
- VS (1)
- angular http jsonp (1)
- NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL (1)
- http://www.cnblogs.com/madyina/p/5970814.html (1)
- 批量生成各尺寸的iOS图标 (1)
- Ionic2 Rest 认证 (1)
- 反编译工具 IDA (1)
- formbuilder (1)
- asp.net com 80040154 Class not registered (1)
- angular2-highcharts用法详解 (1)
- 儿童教育资源 (1)
- Accordion List with Ionic (1)
- 清华附小权威老师推荐详细书单 (0)
- android (1)
- Hexadecimal -> file (binary) (1)
- open ssl (1)
- swift apple (1)
- 常见网址 (0)
- Charles4.2.5 (1)
- swift link (1)
- 域名 空间申请 (0)
- 常见网址 免费主机 (1)
- 最详细的美国旅游签证办理流程 (1)
- 公司办理美国签证流程 (0)
- link (1)
- 楼市 (0)
- inatall uml (1)
- 信用卡 (0)
- net use 共享 删除 (1)
- perl ftp (1)
- cron (1)
- 2018 self evauation (0)
- upload by ftp linux script (1)
- 青少年学习 (1)
- Shell脚本交互之:自动输入密码 (1)
- 通过ffmpeg实现视频流截图 (1)
- Discuz论坛迁移--数据库配置文件 (1)
- ELK(ElasticSearch (1)
- Logstash (1)
- Kibana)搭建实时日志分析平台 (1)
- 阿里面试题目目录 (1)
- network-attached storage (NAS) (1)
- jar (1)
- PostgreSQL操作-psql基本命令 (0)
- PostGreSQL (1)
- 百度网盘资源搜索 (1)
- git command (1)
- log4perl MinGW Dev C++ (1)
- perl 自定义模块 (1)
- 使用virt-manager安装和管理虚拟机 (1)
- ActivePerl5.14 (1)
- servicenter (1)
- 民国货币 (0)
- 物价变迁 (0)
- 历年养老金涨幅 (1)
- 1987年北京物价 (1)
- 金融业总资产 (1)
- 中国通史 (0)
- How to change @INC to find Perl modules in non-standard locations (1)
- ruby on rails (1)
- win10 ruby (1)
- Sybase isql常用命令 (1)
- php开发环境搭建 (1)
- check_Radius_Account.php (1)
- SymmetricDS (1)
- Kotlin Eclipse 环境搭建 (1)
- 基于SpringBoot搭建应用开发框架 基于SpringBoot-Dubbo的微服务快速开发框架 (1)
- 架构师技术图谱,助你早日成为架构师 (1)
- Java并发编程:volatile关键字解析 (1)
- MySQL 表锁和行锁机制 (1)
- IntelliJ IDEA 2018激活码 永久破解 (0)
- 基于 Javassist 和 Javaagent 实现动态切面 (1)
- JAVA必背面试题和项目面试通关要点(带答案) (1)
- Hadoop分布式集群的搭建 (1)
- navicat112_premium (0)
- snmp trap (1)
- net snmp linux (1)
- net snmp trap (1)
- install wmi in linux (1)
- vidyard (0)
- compare file content (1)
- XINETD TCP echo service (1)
- 从页面获取form表单提交的数据 (1)
- thymeleaf 分页 级联 (1)
- Apache log4j2 远程命令执行漏洞复现及修复方案 (1)
- win7 瘦身 (0)
最新评论
Angular2 Http
1. 使用Http
绝大部分应用程序都会和后台服务打交道,Http是浏览器和服务器之间通讯的主要协议,通过Http调用来访问远程服务器上相应的 Web API。
HttpModule 并不是 Angular 的核心模块,通过Angular包中一个名叫 @angular/http 的独立附属模块发布了出来。我们的应用将会依赖于Angular的 http 服务,它本身又依赖于其它支持类服务。来自 @angular/http 库中的 HttpModule 保存着这些 HTTP 相关服务提供商的全集。
现代浏览器支持两种基Http的API : XMLHttpRequest (XHR) 和 JSONP 。少数浏览器还支持 Fetch 。在Angular中分别对应@angular/http 库中的HttpModule 和JsonpModule两个模块。
2. GET获取数据
为了能够使用XHR中的Get方法来获取数据信息,我们把 HttpModule 添加到 AppModule 的 imports 列表中,这样本应用程序的任何地方都可以访问XHR服务。
我们使用Http服务的实例中的get方法来执行http get方法获取数据,该方法的调用形式如下
get(url: string, options?: RequestOptionsArgs) : Observable<Response>
来看一个简单的例子,代码如下
@Component({
selector: 'demo',
template: '<button id="input" (click)="click()">Get Data</button>',
})
export class DemoComponent {
constructor(private http: Http) {
}
url: string = '/api/list';
click() {
this.http.get(this.url).subscribe(function (data) {
console.log(data)
})
}
}
我们在DemoComponent构造函数中采用DI获取了Http服务的实例http,当点击获取数据的按钮后,便能够通过Http实例中的get方法,根据其参数url地址及options?: RequestOptionsArgs参数来获取对应的数据信息。该方法返回的是一个可观察对象 (Observable),针对可观察对象,我们可以subscribe对应的方法,当数据返回后进行处理。
3. POST发送数据
同样的,为了能够使用XHR中的POST方法来获取数据信息,我们把 HttpModule 添加到 AppModule 的 imports 列表中,这样本应用程序的任何地方都可以访问XHR服务。
我们使用Http服务的实例中的post方法来执行http post方法获取数据,该方法的调用形式如下
post(url: string, body: any, options?: RequestOptionsArgs) : Observable<Response>
来看一个简单的例子,代码如下
@Component({
selector: 'demo',
template: '<button id="input" (click)="click()">Get Data</button>',
})
export class DemoComponent {
constructor(private http: Http) {
}
url: string = '/api/post';
click() {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
this.http.post(this.url, JSON.stringify({ 'id': '1' }), options).subscribe(function (data) {
console.log(data)
})
}
}
我们在DemoComponent构造函数中采用DI获取了Http服务的实例http,当点击获取数据的按钮后,便能够通过Http实例中的get方法,根据其参数url地址, body:any及options?: RequestOptionsArgs参数来提交对应的数据信息,其中body表示传递到服务器端的数据信息。示例中,我们传递json格式的数据到服务器端,所以使用了'Content-Type': 'application/json'头信息进行包装。
该方法返回的是一个可观察对象 (Observable),针对可观察对象,我们可以subscribe对应的方法,当数据返回后进行处理。
4. JSONP获取数据
用 Angular Http 服务发起 XMLHttpRequests,是与服务器通讯时最常用的方法。但它不适合所有场景。
出于安全的考虑,网络浏览器会阻止调用与当前页面不“同源”的远端服务器的XHR。所谓源就是 URI 的协议 (scheme) 、主机名 (host) 和端口号 (port) 这几部分的组合。这被称为同源策略。
为了可以向不同源的服务器发起 XHR 请求,这时候就需要支持一种老的、只读的 ( 译注:即仅支持 GET) 备选协议,这就是 JSONP。
为了能够使用JSONP中的Get方法来获取数据信息,我们把 JsonpModule 添加到 AppModule 的 imports 列表中,这样本应用程序的任何地方都可以访问Jsonp服务。
Angular的Jsonp服务不但通过JSONP 扩展了Http 服务,而且限制我们只能用GET请求,调用的形式如下。
get(url: string, options?: RequestOptionsArgs) : Observable<Response>
我们来看一个例子,该示例和Http Get访问十分类似,
@Component({
selector: 'demo',
template: '<button id="input" (click)="click()">Get Data</button>',
})
export class DemoComponent {
constructor(private jsonp: Jsonp) {
}
url: string = '/api/list';
click() {
this.jsonp.get(this.url).subscribe((data) => {
console.log(data);
});
}
}
5. 结果处理
5.1 可观察对象
我们通过Http以及Jsonp的api接口可以知道,默认返回值都是可观察对象 Observable< Response >。可以把可观察对象 Observable 看做一个由某些“源”发布的事件流。 通过 订阅 到可观察对象 Observable ,我们监听(subscribe)这个流中的事件。 在这些订阅中,我们指定了当 Web 请求生成了一个成功事件 ( 有效载荷是英雄数据 ) 或失败事件 ( 有效载荷是错误对象 ) 时该如何采取行动,如示例中所示。
我们的服务可以返回 HTTP 响应对象Response。但这可不是一个好主意! 数据服务的重点在于,对消费者隐藏与服务器交互的细节。其实上,我们最关心的还是获取到的返回数据信息,这时候我们就可以利用RxJS库来对事件流进行一些额外的处理。
RxJS("Reactive Extensions" 的缩写)是一个被 Angular 认可的第三方库,它实现了异步可观察对象 (asynchronous observable) 模式。Rxjs库中包含很多对事件流进行处理的方法,例如map,distinctUntilChanged等操作符。
针对返回数据是json格式的响应对象,可以把Response解析成 JavaScript 对象——只要调一下 response.json() 就可以了,这时候我们就可以利用map操作符来进行处理,例如
this.jsonp.get(this.url)
.map((rsp:Response)=>{
return rsp.json()
})
.subscribe((data) => {
console.log(data);
});
5.2 Promise
虽然 Angular 的 http 客户端 API 返回的是 Observable<Response> 类型的对象,但我们也可以把它转成 Promise<Response>。这很容易,只需要调用可观察对象 Observable< Response >的方法toPromise()就能够进行转化。例如
this.jsonp.get(this.url)
.toPromise()
.then((rsp: Response) => {
console.log(rsp)
});
1. 使用Http
绝大部分应用程序都会和后台服务打交道,Http是浏览器和服务器之间通讯的主要协议,通过Http调用来访问远程服务器上相应的 Web API。
HttpModule 并不是 Angular 的核心模块,通过Angular包中一个名叫 @angular/http 的独立附属模块发布了出来。我们的应用将会依赖于Angular的 http 服务,它本身又依赖于其它支持类服务。来自 @angular/http 库中的 HttpModule 保存着这些 HTTP 相关服务提供商的全集。
现代浏览器支持两种基Http的API : XMLHttpRequest (XHR) 和 JSONP 。少数浏览器还支持 Fetch 。在Angular中分别对应@angular/http 库中的HttpModule 和JsonpModule两个模块。
2. GET获取数据
为了能够使用XHR中的Get方法来获取数据信息,我们把 HttpModule 添加到 AppModule 的 imports 列表中,这样本应用程序的任何地方都可以访问XHR服务。
我们使用Http服务的实例中的get方法来执行http get方法获取数据,该方法的调用形式如下
get(url: string, options?: RequestOptionsArgs) : Observable<Response>
来看一个简单的例子,代码如下
@Component({
selector: 'demo',
template: '<button id="input" (click)="click()">Get Data</button>',
})
export class DemoComponent {
constructor(private http: Http) {
}
url: string = '/api/list';
click() {
this.http.get(this.url).subscribe(function (data) {
console.log(data)
})
}
}
我们在DemoComponent构造函数中采用DI获取了Http服务的实例http,当点击获取数据的按钮后,便能够通过Http实例中的get方法,根据其参数url地址及options?: RequestOptionsArgs参数来获取对应的数据信息。该方法返回的是一个可观察对象 (Observable),针对可观察对象,我们可以subscribe对应的方法,当数据返回后进行处理。
3. POST发送数据
同样的,为了能够使用XHR中的POST方法来获取数据信息,我们把 HttpModule 添加到 AppModule 的 imports 列表中,这样本应用程序的任何地方都可以访问XHR服务。
我们使用Http服务的实例中的post方法来执行http post方法获取数据,该方法的调用形式如下
post(url: string, body: any, options?: RequestOptionsArgs) : Observable<Response>
来看一个简单的例子,代码如下
@Component({
selector: 'demo',
template: '<button id="input" (click)="click()">Get Data</button>',
})
export class DemoComponent {
constructor(private http: Http) {
}
url: string = '/api/post';
click() {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
this.http.post(this.url, JSON.stringify({ 'id': '1' }), options).subscribe(function (data) {
console.log(data)
})
}
}
我们在DemoComponent构造函数中采用DI获取了Http服务的实例http,当点击获取数据的按钮后,便能够通过Http实例中的get方法,根据其参数url地址, body:any及options?: RequestOptionsArgs参数来提交对应的数据信息,其中body表示传递到服务器端的数据信息。示例中,我们传递json格式的数据到服务器端,所以使用了'Content-Type': 'application/json'头信息进行包装。
该方法返回的是一个可观察对象 (Observable),针对可观察对象,我们可以subscribe对应的方法,当数据返回后进行处理。
4. JSONP获取数据
用 Angular Http 服务发起 XMLHttpRequests,是与服务器通讯时最常用的方法。但它不适合所有场景。
出于安全的考虑,网络浏览器会阻止调用与当前页面不“同源”的远端服务器的XHR。所谓源就是 URI 的协议 (scheme) 、主机名 (host) 和端口号 (port) 这几部分的组合。这被称为同源策略。
为了可以向不同源的服务器发起 XHR 请求,这时候就需要支持一种老的、只读的 ( 译注:即仅支持 GET) 备选协议,这就是 JSONP。
为了能够使用JSONP中的Get方法来获取数据信息,我们把 JsonpModule 添加到 AppModule 的 imports 列表中,这样本应用程序的任何地方都可以访问Jsonp服务。
Angular的Jsonp服务不但通过JSONP 扩展了Http 服务,而且限制我们只能用GET请求,调用的形式如下。
get(url: string, options?: RequestOptionsArgs) : Observable<Response>
我们来看一个例子,该示例和Http Get访问十分类似,
@Component({
selector: 'demo',
template: '<button id="input" (click)="click()">Get Data</button>',
})
export class DemoComponent {
constructor(private jsonp: Jsonp) {
}
url: string = '/api/list';
click() {
this.jsonp.get(this.url).subscribe((data) => {
console.log(data);
});
}
}
5. 结果处理
5.1 可观察对象
我们通过Http以及Jsonp的api接口可以知道,默认返回值都是可观察对象 Observable< Response >。可以把可观察对象 Observable 看做一个由某些“源”发布的事件流。 通过 订阅 到可观察对象 Observable ,我们监听(subscribe)这个流中的事件。 在这些订阅中,我们指定了当 Web 请求生成了一个成功事件 ( 有效载荷是英雄数据 ) 或失败事件 ( 有效载荷是错误对象 ) 时该如何采取行动,如示例中所示。
我们的服务可以返回 HTTP 响应对象Response。但这可不是一个好主意! 数据服务的重点在于,对消费者隐藏与服务器交互的细节。其实上,我们最关心的还是获取到的返回数据信息,这时候我们就可以利用RxJS库来对事件流进行一些额外的处理。
RxJS("Reactive Extensions" 的缩写)是一个被 Angular 认可的第三方库,它实现了异步可观察对象 (asynchronous observable) 模式。Rxjs库中包含很多对事件流进行处理的方法,例如map,distinctUntilChanged等操作符。
针对返回数据是json格式的响应对象,可以把Response解析成 JavaScript 对象——只要调一下 response.json() 就可以了,这时候我们就可以利用map操作符来进行处理,例如
this.jsonp.get(this.url)
.map((rsp:Response)=>{
return rsp.json()
})
.subscribe((data) => {
console.log(data);
});
5.2 Promise
虽然 Angular 的 http 客户端 API 返回的是 Observable<Response> 类型的对象,但我们也可以把它转成 Promise<Response>。这很容易,只需要调用可观察对象 Observable< Response >的方法toPromise()就能够进行转化。例如
this.jsonp.get(this.url)
.toPromise()
.then((rsp: Response) => {
console.log(rsp)
});
相关推荐
总结来说,Angular2的HTTP和JSONP服务提供了强大的工具来处理客户端与服务器之间的数据交换。理解这些基础概念和用法对于开发高效的前端应用至关重要。通过实例学习,开发者可以更好地掌握如何在Angular项目中发送...
本文实例讲述了Angular使用$http.jsonp发送跨站请求的方法。分享给大家供大家参考,具体如下: Angular中使用$http.jsonp发送跨站请求的实践中,遇到了下面的一些问题: 1. 不是所有返回json格式的url都支持jsonp,...
内置的HttpClient模块是Angular处理网络请求的主要工具,它提供了强大的功能,包括GET、POST、JSONP等HTTP方法,以及与第三方库如axios的集成。本文将深入探讨HttpClient的使用及其在Angular中的实践。 首先,...
Angular2中的HTTP模块还支持JSONP(JSON with Padding)请求,这是当请求跨域时的一种解决方案,它允许从不同的域中加载数据。JSONP请求通过动态创建script标签的方式来实现跨域通信,因为script标签不受同源策略的...
总结,Angular的HttpClient模块为开发人员提供了方便的数据请求工具,涵盖了GET、POST和JSONP等基本请求类型。同时,我们也可以根据需求选择引入第三方库如axios,以获得更丰富的功能和API。理解并熟练运用这些请求...
Angular2中的Observables是一种响应式编程模型,它允许开发者通过声明式的方式来处理异步数据流和事件。在Angular2及其后续版本中,Observables被广泛应用于构建与服务器交互的场景,因为它提供了强大的数据流处理...
angular-odoo-jsonp 用于 angular js 的 odoo jsonp 以避免 CORS(跨源资源共享)。
05 angular4.x http get post以及 jsonp数据请求.pdf专注于网络请求,包括使用Angular的HttpClient模块进行GET、POST操作,以及JSONP(JSON with Padding)用于跨域数据获取。这部分内容对于与服务器进行数据交互至...
可以使用get、post和jsonp等HTTP方法从服务器请求数据,并处理这些数据。 八、路由设置 Angular的路由允许定义导航路径,并管理视图之间的转换。路由相关的知识点包括创建路由、定义动态路由、设置默认路由、路由...
同时,Angular的HTTP服务支持JSONP和CORS,可以方便地进行跨域请求,但开发者仍需注意相应的安全策略,以防止潜在的安全风险。 最后,Inspinia Admin v2.5的文档详尽,社区活跃,为开发者提供了丰富的学习资源和...
使用 Angular 请求数据的时候,需要引入 HttpModule 模块,如果使用的 jsonp 模式的话,则需要另外引入 JsonpModule ...import { Http, Jsonp } from '@angular/http' 然后在当前组件的构造函数当中进行注入以后就可
2. **配置Angular服务** 在你的Angular服务中,注入`$cordovaQRScanner`服务并使用它的方法来启动和停止扫描。例如: ```javascript angular.module('yourApp').service('qrService', ['$cordovaQRScanner', ...
在这个“playing_with_jsonp_and_angular”项目中,我们将深入理解JSONP的工作原理以及如何在纯JavaScript和AngularJS框架中实现它。 首先,我们从基本概念开始。由于浏览器的安全策略,JavaScript通常被限制只能与...
AngularJS对JSONP的支持体现在其$http服务中,提供了一个`jsonp`方法。例如,以下代码展示了如何使用AngularJS的JSONP功能: ```javascript $http.jsonp('https://api.github.com?callback=JSON_CALLBACK') ....
@ ng-zorro / rebirth-http Java JPA,例如Angular的HTTP客户端。 :package: 安装$ npm install @ng-zorro/rebirth-http --save :hammer: 用法步骤1,注册RebirthHttpModule import { RebirthHttpModule } from '@ng...
同时,`$http`服务增强了处理HTTP请求的功能,支持JSONP和CORS。 7. **过滤器(Filters)** 过滤器用于格式化数据,如日期、货币、排序等。1.3.6版本的过滤器更加丰富,且可链式使用,提高了数据展示的灵活性。 8...