server.js
var http=require('http')
var handleUrl=require('./handleUrl')
var config = require('./config');
http.createServer(function(req,res){
res.writeHead(200, {
'Content-Type': 'text/plain',
'Content-Type':'text/html; charset=utf-8'
});
res.write(handleUrl(req.url)+"")
res.end();
}).listen(config.port)
handleUrl.js
var config=require('./config')
var fs=require('fs')
var path=require('path')
const { URL } = require('url');
const querystring = require('querystring'); module.exports=function(url){
//判断请求的路径中有没有api
if(url.indexOf(config.ApiSuffix)>-1){
return parseUrl(url)
}else{
return parseStaticUrl(url)
}
}
//静态资源请求路径处理
function parseStaticUrl(url){
if(url.indexOf('favicon.ico')<=-1){
var urlObj=require('url').parse(url)
var pathname=urlObj.pathname;
var filepath=path.resolve(config.staticFile+pathname);//获取文件的绝对地址
return fs.readFileSync(filepath).toString('utf8');
}
}
//api请求路径处理
function parseUrl(url){
if(url.indexOf('favicon.ico')<=-1){
var urlObj=require('url').parse(url)
var pathname=urlObj.pathname;
var reg=new RegExp("\/(\\w+)\\"+config.ApiSuffix+"$");
var funame=pathname.match(reg)[1];//获取要执行的方法名
var filepath=path.resolve(pathname.substr(1,pathname.lastIndexOf("/")-1)+".js");//获取文件的绝对地址
var param=querystring.parse(urlObj.query)//把参数解析成对象
var targetfile=require(filepath);
return targetfile[funame](param)
}
}
config.js
module.exports={
ApiSuffix:'.do',//api请求后缀
staticFile:'./static',//存放静态资源的文件夹路径
port:9999//端口号
}
controller/user.js
module.exports={
name : 8888888888888,
addUser : function(obj){
return "您要增加的用户名字是"+obj.name+"";
}
}
api访问举例 http://localhost:9999/controller/user/addUser.do?name=5555
返回的结果是
您要增加的用户名字是5555