zoukankan      html  css  js  c++  java
  • 用node写的一个后台框架

    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
  • 相关阅读:
    实验axios用户登录及token验证
    vue的路由跳转了,可是页面没有变化
    搞清楚cookie,session,token,JWT
    APP应用测试流程
    Scrum敏捷开发
    APP项目环境及发布平台
    ssh -T git@github.com ssh: connect to host github.com port 22: Connection timed out
    pytest与unitest区别
    数据库三大范式--大白话
    docker 安装mysql挂载/var/lib/mysql目录时启动就退出
  • 原文地址:https://www.cnblogs.com/liuhao-web/p/7169024.html
Copyright © 2011-2022 走看看