nodejs之mock与跨域代理的三两事
emmm...好久没写博客了,都忘了该怎么开始。
那就先说下mockjs。因为一些原因,导致后台接口没有数据,那么我们就开始自己造数据,使用的是比较流行mockjs,根据文档就能简单的配置,然后开始愉快的玩耍了。(真香)
然后某天后台出数据了,又因为某些问题(跨域),导致我又没法愉快的玩耍,嗯,就是这样的,才有了今天这篇博客(口水话)。
使用的是nodejs做跨域代理,非常简单,先贴代码:
var express = require('express');
var router = express.Router();
var http = require('http');
router.all('*', function(request, response, next) { //代理了所有请求
var content = JSON.stringify(request.body); //转发原味的数据
var options = {
host: 'example.com', //需要代理的域名或者是ip
port: 80, //端口号
path: request.path, //路径
method: 'POST', //请求代理的方法
headers: { //设置一些请求头之类的
'Content-Type': 'application/json',
'Content-Length': content.length
}
};
//开始做代理转发数据
var req = http.request(options, function(res) {
var _data = '';
res.on('data', function(chunk) {
_data += chunk;
});
res.on('end', function() {
//请求完成之后让response对象返回json
response.json(JSON.parse(_data))
});
});
//这个write大概就是发送这个body,以chunk的形式 原文: https://nodejs.org/dist/latest-v10.x/docs/api/http.html response.write(chunk[, encoding][, callback])
req.write(content);
//这次代理结束
req.end();
});
下面说下为什么这样写,最开始是匹配的所有路由,即:
router.all('/path', function(request, response, next) {
//do something
})
后来发现,这样其实太繁琐了,我有多少个接口我就要写多少个'/path',然后我想到了一个*值,这样就匹配到了所有的path,前端发什么,我就代理什么,不管你有没有这个接口,没有当然就报错啦,所以才有上面我的path是request.path。(这里需要一个滑稽的表情)
好了,口水话太多,干货也就一点,还不知道下次更博是啥时候,有点小失落,不过到时候应该是小激动吧。
nodejs之mock与跨域代理的三两事的更多相关文章
- vue-cli 前端开发,后台接口跨域代理调试问题
使用 webpack的方式开发的时候,前台开发过程中需要调用很多后台的数据接口,但是通常前后台分离的开发方式,后台的接口数据很可能是不方便或者是不能在前端同学的电脑上运行的,也就出现了所谓的跨域问题. ...
- axios FastMock 跨域 代理
发送请求: 实现:发送请求,获取数据. 原本想自己写服务,后来无意间找到FastMock这个东东,于是就有了下文... 首先我安装了axios,在fastmock注册好了并创建了一个接口,怎么搞自行百 ...
- NodeJS设置Header解决跨域问题
转载: NodeJS设置Header解决跨域问题 app.all('*', function (req, res, next) { res.header('Access-Control-Allow-O ...
- eclipse加速/Nginx配置跨域代理
下班时间到啦! --下班都是他们的,而我,还是什么都没有. eclipse加速 去掉包含js文件的包的js验证,否则每次启动都需要进行校验(右击项目->properties) Nginx配置跨域 ...
- Nginx 跨域代理
安装环境: win10 nginx-1.17.2 安装: 在写前端调用后台接口时,报了跨域的错误. 调试地址:http://localhost:5500/demo/encAjax.html 接口地址: ...
- axios,vue-echarts, async, vue 图表数据处理; axios 跨域代理; 异步同步请求接口;生命周期函数
1.vue-echarts 安装和组件引用 插件官网 https://github.com/ecomfe/vue-echarts 安装 npm install eacharts vue-echarts ...
- React网络请求跨域代理设置
之前的之所以可以请求其他域名下的网络数据,是因为我们在服务端设置了相关配置,如下所示 如果将其注释掉,再次测试,如下所示 此时便无法跨域操作,接下来介绍下React如何实现跨域代理 (1)分析 Rea ...
- Next.js 配置接口跨域代理转发
使用 create-next-app 创建的 Next.js 项目配置接口跨域代理转发需要用到 custom server 功能. 先安装好 express 和 http-proxy-middlewa ...
- ionic+nodejs开发遇到的跨域和post请求数据问题
最近学习ionic+nodejs开发混合app中遇到了一些问题,在此总结一下. 开发环境搭建 项目地址 https://github.com/ytudt/nodejsApp 代码和问题都会在之后的学习 ...
随机推荐
- 简易OA漫谈之工作流设计(五,直接上级)
规则引擎里比较复杂的问题就是:配置步骤的审批人. 某一个步骤由谁来审批,有很多复杂情况: 1.指定某一个具体的人.这种通常用于一些特殊的岗位,全公司只有一个,比如小公司里的财务,人事专员等. 2.指定 ...
- IO多路复用版FTP
需求: 实现文件上传及下载功能 支持多连接并发传文件 使用select or selectors 流程图 import socket import pickle import sys import t ...
- ceph使用对象网关
1. 介绍 三种验证客户端的方式选一种就行了 2. 安装 2.1 创建对象存储网关系统 步骤1:安装文档安装ceph 步骤2:初始化缓存网关 [root@node1 my-cluster]# ...
- JavaScript(ES6)学习笔记-Set和Map与数组和对象的比较(二)
一.Map,Set,Array对比: 1.增 let map = new Map(); let set = new Set(); let array = []; map.set('t',1); //M ...
- sed应用
删除每行空白字符 sed -i 's/^[[:space:]]*//' user.txt 删除空白行 sed -i '/^$/d' user.txt
- Oracle查询语句导致CPU使用率过高问题处理
解决此问题的关键在于如何找到造成CPU使用率过高的SQL语句.步骤如下: 1.使用Process Explorer工具查看到Oracle进程,双击Oracle进程,在弹出的属性窗口的Threads选项 ...
- CSS可见区域全局居中
top:$(document).scrollTop() + ($(document).height() - $(document).scrollTop())/2,
- Jsp的table导出Excel
var idTmr; function getExplorer() { var explorer = window.navigator.userAgent ; //ie if (explorer.in ...
- Triangle Count
Given an array of integers, how many three numbers can be found in the array, so that we can build a ...
- javascript20150124
表达式与运算符 表达式 与数学中的定义相似,表达式是指具有一定的值的.用运算符把常数和变量连接起来的代数式.一个表达式可以只包含一个常数或一个变量.运算符可以是四则运算符.关系运算符.位运算符.逻辑运 ...