①使用ng g service services/storage创建一个服务组件

②在app.module.ts 中引入HttpClientModule模块

③在app.module.ts 中引入创建的服务

④在services/http.service.ts中封装一个简单的http请求

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http'; @Injectable({
providedIn: 'root'
})
export class HttpService {
public hxApi = 'http://127.0.0.1:3000/';
constructor(public http: HttpClient) { }
get(api: any, obj: any): any {
return new Promise((resolve, reject) => { //使用Promise进行二次封装
this.http.get(this.hxApi + api, obj).subscribe({
next(res): any {
resolve(res);
},
error(err): any {
reject(err);
}
});
});
} post(api: any, obj: any): any {
const htttpOptions = {
headers: new HttpHeaders({ 'Content-type': 'application/json' })
}; //post请求需要设置此参数
return new Promise((resolve, reject) => {
this.http.post(this.hxApi + api, obj, htttpOptions).subscribe({
next(res): any {
resolve(res);
},
error(err): any {
reject(err);
}
});
});
}
}

⑤在组件中使用HttpService

import { Component } from '@angular/core';
import { HttpService } from './services/http.service'; @Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.less']
})
export class AppComponent {
title = 'angular-http';
constructor(public http: HttpService) { }
getData(): void {
this.http.get('users/xixi2', { params: { name: 'xixiGet' } }) //注意get请求和post请求的传参方式不一样
.then(res => {
console.log(res);
})
.catch(err => {
console.log(err);
});
}
postData(): void {
this.http.post('users/xixi', { name: 'xixiPost' })
.then(res => {
console.log(res);
})
.catch(err => {
console.log(err);
});
}
}
 

Angular:使用service进行http请求的简单封装的更多相关文章

  1. java 接口自动化测试之数据请求的简单封装

    我们自己用java写接口自动化测试框架或者做个接口自动化测试平台的话,是需要自己进行相关的请求的,因此我们需要简单的封装下httpclient,我新建了一个http工具类,将get方法和post方法进 ...

  2. 小程序 请求Promise简单封装

    最近做小程序在调用后台接口的时候感觉总写很长一串,很冗杂.非常想念vue中promise封装的写法,于是自己初步封装了一下. 1.url 接口地址 2.headers请求头 3. params 请求参 ...

  3. HttpClient 发送 HTTP、HTTPS 请求的简单封装

    import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.Http ...

  4. 对ajax请求的简单封装,操作更方便

    我这里的接口数据调用的js叫interface.js,接口路径管理的js叫webSiteControl.js /** * Created by l2776 on 2017/7/11. * 接口数据调用 ...

  5. Angular和jQuery的ajax请求的差别

    近期项目中使用angular,结果发现后台没法获取參数,所以,略微研究了一下两者在发送ajax时的差别. 注意angular和jquery的ajax请求是不同的. 在jquery中,官方文档解释con ...

  6. python网页请求urllib2模块简单封装代码

    这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...

  7. Web请求响应简单整理

      简单对Web请求响应如何处理进行的整理,难免有理解不到位,理解有偏差的地方,如有理解有误的地方,希望大牛批评指正. 1.Web开发的定义首先看看微软对Web开发的定义:Web开发是一个指代网页或网 ...

  8. Ajax与ashx异步请求的简单案例

    Ajax与ashx异步请求的简单案例: 前台页面(aspx): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...

  9. CORS跨域请求之简单请求与非简单请求

    先来看一个例子 定义server01的项目,在路由表中添加一条路由记录 url(r'^getData.html$',views.get_data) 对应的视图函数 from django.shortc ...

随机推荐

  1. 信息论-Turbo码学习

    1.Turbo码: 信道编码的初期:分组码实现编码,缺点有二:只有当码字全部接收才可以开始译码,需要精确的帧同步时延大,增益损失多 解决方案:卷积码:充分利用前一时刻和后一时刻的码组,延时小,缺点:计 ...

  2. conda / cuda / screen 常用命令总结

    记录一些常用的 conda / cuda / screen 相关的命令,这些在跑深度学习代码时经常用到. conda 下面的命令在 Ubuntu 下的 4.8.3 版本 conda 均正确工作. 查看 ...

  3. Javaweb项目页面实时显示后台处理结果

    http://www.cnblogs.com/dong-xu/p/6701271.html 此博文甚好,项目参照博主代码可实现. 前端页面: <%@ page language="ja ...

  4. Centos快速安装Docke

    预备 删除旧docker # 删除旧docker $ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-co ...

  5. kafka SASL认证介绍及自定义SASL PLAIN认证功能

    目录 kafka 2.x用户认证方式小结 SASL/PLAIN实例(配置及客户端) broker配置 客户端配置 自定义SASL/PLAIN认证(二次开发) kafka2新的callback接口介绍 ...

  6. iMindMap思维导图中可以插入哪些附件?

    iMindMap(Windows系统)不仅拥有灵活的排版功能,而且还允许用户插入多种附件,丰富思维导图的内容.用户可以为思维导图添加图片.网址.录音等文件,让导图更显生动性.实用性. 将图片.录音等文 ...

  7. 清理工具CleanMyMac如何帮助用户清空DNS缓存

    什么是DNS缓存?这个缓存有什么危害?相信大家平时使用浏览器时,有时候会遇到一个很奇怪的问题,就是Mac打开许多网站如百度网站,都是可以访问的,但是在打开某个特定网站时,却发现浏览器提示检测不到网络连 ...

  8. And Or IN Not操作符

    再sql中And比or运算符优先级要更高,比如说  条件1 Or 条件2 And 条件3     如果先执行or,就是1or2   再and3 但是实际上是  2and3 再or 1,所以如果想要 1 ...

  9. Running Median POJ - 3784

    本题使用对顶堆做法. 为了动态维护中位数,我们可以建立两个堆 :一个大根对,一个小根堆. 用法:在动态维护的过程中,设当前的长度为length,大根堆存从小到大排名 $1 \thicksim \dfr ...

  10. canvas 元素覆盖&穿透问题

    给网站添加canvas动态背景.完后发现有a标签无法点击,想到是canvas覆盖了(但有些是可以的).网上查找,有解决穿透的问题,但canvas的鼠标事件会无效.后发现是定位问题. canvas样式 ...