angular开发中对请求数据层的封装
代码地址如下:
http://www.demodashi.com/demo/11481.html
一、本章节仅仅是对angular4
项目开发中数据请求封装到model
中
仅仅是在项目angular4项目部署结构的基础上扩展了,根据
javaweb
项目开发分层来说命名service
可能会好点,但是为了不与angular4
中本身就有的服务想冲突,本人取名为model
与数据层打交道的
二、项目结构
三、本章节使用到的技术点
- 1、封装了带头部信息的(可能出于安全考虑
CSRF
攻击类的,或者python-web
开发就必须要带tockend
头信息) - 2、简单的封装了
get
和post
请求的基础模型 - 3、把基础模型的类注入到项目开发中的接口模型中
- 4、
form
表单提交数据仅仅是利用的模板局部变量的方式获取输入框的值 - 5、使用代理解决开发过程中跨域的问题
- 6、使用
express
搭建一个后端服务器 - 7、
node
服务器对mySQL
数据库的查询与增加数据
四、重要代码描述
1、基础模型代码的封装
import { Injectable } from '@angular/core'; import { Http, Headers } from '@angular/http'; import { Observable } from 'rxjs/Observable'; import 'rxjs/Rx';@Injectable() export class ServiceBaseService {constructor(private http: Http) { }/*** @param {string} url地址* @param {any} [options]可选提交的参数* @param {any} [header]可选设置的头信息* @memberof ServiceBaseService* @title: 封装一个get请求的基础类*/getData(url: string, options?: any, myheaders?: any): Observable<any> {// 配置请求头const myHeaders: Headers = new Headers();// tslint:disable-next-line:forinfor (const key in myheaders) {myHeaders.append(key, myheaders[key]);};url += (url.indexOf('?') < 0 ? '?' : '&') + this.param(options);return this.http.get(url, { headers: myHeaders }).map(res => res.json());}/*** @param url地址* @param options提交的数据* @param myheaders可选参数设置头* @title:封装一个post请求数据的*/postData(url: string, options: any, myheaders?: any): Observable<any> {const myHeaders: Headers = new Headers();myHeaders.append('Content-Type', 'application/json');// tslint:disable-next-line:forinfor (const key in myheaders) {myHeaders.append(key, myheaders[key]);};return this.http.post(url, options, { headers: myHeaders });}/*** @param {any} data* @returns* @memberof ServiceBaseService* @title:封装一个序列化get请求的参数的方法*/param(data): string {let url = '';// tslint:disable-next-line:forinfor (const k in data) {const value = data[k] !== undefined ? data[k] : '';url += `&${k}=${encodeURIComponent(value)}`;}return url ? url.substring(1) : '';} }
2、项目的根目录中创建
proxy.conf.json
解决跨域问题{"/wiseoper/**": {"target": "http://localhost:3000","secure": false} }
3、关于代理解决跨域的注意点请参考
4、关于
get
请求获取数据的模型import { Injectable } from '@angular/core'; import { ServiceBaseService } from 'app/model/service-base.service';@Injectable() export class GetServiceService {constructor(private serviceBase: ServiceBaseService) { }// 获取数据 getData() {const url = '/wiseoper/';return this.serviceBase.getData(url, {name: 'hello', age: 20}, {QQ: '332904234'});} }
5、在组件的
component.ts
中直接调用模型中的方法就可以// 直接调用get请求数据的方法 getDate(): void {this.getService.getData().subscribe(data => {console.log(data);}); }
6、可以从控制台上查看给请求头添加的内容
五、关于post
请问的封装
1、服务器代码
router.post("/wiseoper/register",(req,res)=>{//如果是post提交数据就用req.body接收 console.log(req.body);db("insert into cms_user(username,password) values(?,?)",[req.body.username,req.body.password],(err,data)=>{console.log(err);if (err){res.json({code:0,info:"注册失败"});}console.log(data);if (data){res.json({code:1,info:"注册成功"});}}) });
2、
angular4
中对post
请求的封装/*** @param url地址* @param options提交的数据* @param myheaders可选参数设置头* @title:封装一个post请求数据的*/ postData(url: string, options: any, myheaders?: any): Observable<any> {const myHeaders: Headers = new Headers();myHeaders.append('Content-Type', 'application/json');// tslint:disable-next-line:forinfor (const key in myheaders) {myHeaders.append(key, myheaders[key]);};return this.http.post(url, options, { headers: myHeaders }); }
angular开发中对请求数据层的封装
代码地址如下:
http://www.demodashi.com/demo/11481.html注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权
angular开发中对请求数据层的封装相关推荐
- php利用文件做数据储存,PHP_PHP文件读写操作之文件写入代码,在PHP网站开发中,存储数据通 - phpStudy...
PHP文件读写操作之文件写入代码 在PHP网站开发中,存储数据通常有两种方式,一种以文本文件方式存储,比如txt文件,一种是以数据库方式存储,比如Mysql,相对于数据库存储,文件存储并没有什么优势, ...
- python web开发-flask访问请求数据request
Request对象在web应用的开发中是一个非常重要的对象,主要用来获取用户发来的请求数据. 常用属性参考:http://docs.jinkan.org/docs/flask/api.html#fla ...
- python示波器 波形数据_Python在嵌入式开发中的应用——数据示波器
Python在嵌入式开发中的应用 引言 在嵌入式开发中我们常常要进行数据分析.算法设计.原型验证.自动化测试.辅助工具设计,每个环节的工作效率对整体的开发都非常重要.选用一个好的辅助开发工具是非常必要 ...
- Android开发中使用Bundle数据传值
Bundle是Android开发中的一个类,用于Activity之间传输数据用,Bundle就是一个专门用于导入Intent传值的包. 1.MainActivity.xml 传输数据(4步) //设置 ...
- native数据类型 react_react-native中的请求数据
很多移动应用都需要从远程地址中获取数据或资源.你可能需要给某个 REST API 发起 POST 请求以提交用户数据,又或者可能仅仅需要从某个服务器上获取一些静态内容. 使用 Fetch React ...
- Angular 开发中的 Source Map
SourceMaps Demystified (.js.map) 当我们构建 Angular 应用程序时,会创建 js 文件和 .js.map(源映射文件)文件. 从本质上讲,源映射是一个 JSON ...
- java开发中jdbc连接数据 库的操作代码
2019独角兽企业重金招聘Python工程师标准>>> JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要 ...
- 前端开发中处理csv数据,也许你可以试试这个方法
前言 在前端开发过程中,经常会用到一些静态的csv数据,最普通的处理方式就是把数据包含在自己的项目中,跟随项目统一部署到服务器,使用时直接去请求服务器的csv数据.但是这样处理有几个劣势: 前端拿到的 ...
- vue异步数据 报错_vue中异步请求数据,异步请求还没完成,文件就执行了就会报错,怎么解决?...
vue中,axios异步加载数据,但是有的文件里面需要用到异步拿到的数据,数据还没拿到,文件已经执行了,这时候数据就是空,就会报错,这个问题怎么解决? 具体表现: 我这边vue项目是进入页面的时候会调 ...
最新文章
- 基于神经网络的溶解度预测和回归分析
- 使用Unity从零点五开始,做半个不能玩的小游戏(完)
- 夏日葵电商:从5大方面谈微信商城怎样提高用户体验度
- C++ STL常用算法总结
- oracle raise默认作用,Oracle:使用RAISE_APPLICATION_ERROR的情况是什么?
- 均值滤波去除图像噪声的matlab程序
- 论文降重的技巧(一顿操作猛如虎-一看查重35%)
- node.js与npm下载及配置流程
- 批处理文件(bat文件)注册dll批量注册dll
- 【IT168 新闻】用友U9 SOA管理软件业标杆吗?
- 现在证券公司内部各部门详解
- illumina平台的一些扩增子测序项目介绍
- SLAM领域的优秀作者与实验室汇总
- windows下choco 安装helm
- 如何使用计算机处理文件夹,电脑打开某些文件夹提示引用了不可用位置怎么解决[多图]...
- proxmox PVE 安装 黑群晖
- JS写一个图片抽奖机
- 2 Python快速上手
- 解决 Idea 下 Tomcat 乱码(淇℃伅璀﹀憡)问题
- 德国有史以来最昂贵电影[Perfume]:《香水:杀手故事》简介:
热门文章
- C++ ifstream 读取文件大小和读取所有内容
- gridsearchcv参数_Python机器学习库Sklearn系列教程(21)-参数优化
- 通过radius给ppp客户端分配ip地址
- 修改mysql默认字符集的方法
- 3.3.4.7. 模式匹配
- 【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)
- 列表ls按照升序排列的python内置函数是_Python习题集
- linux循环控制结构,Linux Shell 之 Shell 基本控制结构(二)(循环结构)
- 【高校宿舍管理系统】第五章 JWT原理和应用以及实现功能菜单
- python中的OrderedDict