当前位置:首页 > 前端

【原创】api接口模拟器(NodeJS版)

Z先生6年前 (2019-11-28)前端737

最近遇到一个项目,内网的APP,后端数据和前段开发属于异地,没法直接做接口数据测试。因此用NodeJs简单写了个API模拟器,只要将响应的数据放在对应目录下json.json文件中即可。

请求地址全静态话,暂未考虑参数问题。

具体代码如下:

main.js文件

'use strict';

var
	fs = require('fs'),
	url = require('url'),
	path = require('path'),
	http = require('http'),
	port = process.argv.splice(2);

port = parseInt(port, 10);
port = isNaN(port) || port == 0 ? 8111 : port;

// 创建http server,并传入回调函数:
var server = http.createServer(function(request, response) {
	// 跨域请求
	let origin = request.headers.origin;
	origin = origin ? origin : "*";
	response.setHeader("Access-Control-Allow-Origin", origin);
	response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
	response.setHeader("Access-Control-Allow-Headers",
		"Origin, X-Requested-With, Content-Type, Accept,X-Tag,authKey,vtoken,sessionID");
	response.setHeader("Access-Control-Allow-Credentials", true);

	var pathname = url.parse(request.url).pathname;
	
	// 关闭nodejs 默认访问 favicon.ico
	if (!pathname.indexOf('/favicon.ico')) {
		return;
	};

	if (pathname == "/") {
		//默认首页
		response.end('It`s Work!');
	} else {
		var filepath = path.join(__dirname, pathname);
		fs.stat(filepath, function(err, stats) {
			if (!err && stats.isFile()) {
				// 没有出错并且文件存在:
				console.log('200 ' + request.url);
				// 发送200响应:
				response.writeHead(200);
				// 将文件流导向response:
				fs.createReadStream(filepath).pipe(response);
			} else {
				var fileArr = pathname.split(".");
				if (fileArr.length === 2) {
					if (fileArr[1].length <= 4) {
						console.log('404 ' + request.url);
						// 发送404响应:
						response.writeHead(404);
						response.end('404 Not Found');
					}
				}
				var _filepath = path.join(filepath, "/json.json");
				fs.stat(_filepath, function(_err, _stats) {
					if (!_err && _stats.isFile()) {
						// 没有出错并且文件存在:
						console.log('200 ' + request.url);
						// 发送200响应:
						response.writeHead(200);
						// 将文件流导向response:
						fs.createReadStream(_filepath).pipe(response);
					} else {
						console.log('404 ' + _filepath);
						response.writeHead(404);
						response.write('<head><meta charset="utf-8"/></head>');

						response.end('请将相应结果写入[' + _filepath + "]文件中");
					}
				})
			}
		})
	}
});

// 让服务器监听端口:
server.listen(port);

console.log('Server is running at http://127.0.0.1:' + port + '/');

运行的时候只需要执行

node main.js 8811

其中8811为端口号,如果不写默认则是8111端口。

请求地址:http://127.0.0.1:8811/App/login

响应文件则是:\App\login\json.json


分享给朋友:

相关文章

小程序二维码传参处理&UNIAPP H5传参兼容处理

首先小程序生成二维码,我这里调用的接口是:getUnlimited,我传递的参数是:invite=10001接着就是小程序中处理,如果直接扫二维码在App.vue的onLaunch中,使用decode…

实现 OpenSearch(Tab to Search)功能

在网站上添加了 OpenSearch 功能以后,IE 7.0 和 Firefox 2.0 以上的浏览器就能够在自带的搜索栏里面添加这个网站的搜索功能了。第一:原始网站支持GET传递参数搜索:第二:编写…

Ckeditor踩坑记

说实话,用了很多富文本编辑器,最精益求精的还是Ckeditor! 曾经一度依赖于百度的Ueditor,因为其简单,方便;特别是在图片上传、H5上传、远程文件下载支持这三个方面,表现尤为突出!…

IE11,Chrome粘贴图片上传的JS实现方法和逻辑

核心代码如下://处理IE11,Chrome粘贴图片上传 function pasteUpload() { var file = null;…

npm如何使用国内镜像源?

通过命令配置1. 命令淘宝源npm config set registry https://registry.npmmirror.com腾讯源npm …

uniapp无缝滚动核心代码

1、页面代码核心代码<scroll-view class="scoll-warp">     <view&nb…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。