node.js使用方法调用的方式创建web server

43 篇文章 1 订阅
15 篇文章 0 订阅

server.js:
通过传参可以不写定port,可以自定义

var http = require("http");
var url = require('url');
// var qs = require('querystring');
// var port = 7888;
var data;
var _server;
const createServer = function (port) {
    var port = port || 3000
    _server = new http.Server().listen(port, () => {
        console.log(`Server running at http://localhost:${port}/`);
    })
    _server.on("request", function (req, res) {

        var parseObj = url.parse(req.url, true);
        var pathname = parseObj.pathname; //相当于无参数的url路径
        console.log(pathname);
        if (pathname === '/getData') {
            res.writeHead(200, {
                "content-type": "application/json;charset=utf-8;"
            });
            // res.write("hello nodejs" + data);  
            res.end(data);
        }
        //关闭服务器,这是根据url,也可以直接调用下面的暴露的方法进行关闭
        else if (pathname === '/exit') {  

            res.end('Bye!');
             _server.close();
             console.log('Bye!', this);

        } else {
            res.end('请求路径: ' + req.url);
        }
    });

    _server.on('clientError', (err, socket) => {
        socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
    });

    _server.on('close', () => {
        console.log('server close')
    })

    _server.on('connection', () => {
        console.log('server connection')
    })

    _server.on('error', (error) => {
        console.log('server error,messmage is' + error)
    })
}
const closeServer = function () {
    //关闭上面建的服务器
    _server.close()

}
module.exports = {
    createServer,
    closeServer
};

在要调用的地方,比如test.js,引入这个js

var serv = require('./server.js')
console.log(serv)
serv.createServer()
//#endregion
setTimeout(() => {
    serv.closeServer()
}, 10000);

这是方法调用的方式创建的web server,可以根据具体的需要进行修改

var http = require('http');  //node服务器使用的是http模块
var server = http.createServer((req,res)=>{
    /**
     * req客户端发过来的数据,包含方法,地址,head,参数等
     * res是服务端的响应
     */
 console.log(req.method)
 console.log(req.url)
 res.setHeader('content-type','text/html')
 res.setHeader('content-encoding','utf8')
 if(req.method==='GET'){
     //switch根据不同的请求地址url响应不同的页面内容
     switch(req.url){
         case '/':
         case '/index.html':
            var html = `
                <html>
                <head><meta charset='UTF-8'/><title>紫薯的服务</title></head>
                    <body>
                        <h2>欢迎来到紫薯的家园</h2>
                        <a href='/add.html'>add</a>
                        <a href='/delete.html'>delete</a>
                        <a href='/edit.html'>edit</a>
                        <a href='/find.html'>find</a>
                    </body>
                </html>
            `
            res.write(html)
             break;

         case '/add.html':
             var addHtml = `
             <html>
                <head>
                    <meta charset='utf-8'/>
                    <title>紫薯的服务</title>
                </head>
                <body><h1>add</h1></body>
             </html>
             `
             res.write(addHtml)
             break;
         case '/delete.html':
                var deleteHtml = `
                <html>
                   <head>
                       <meta charset='utf-8'/>
                       <title>紫薯的服务</title>
                   </head>
                   <body><h1>delete</h1></body>
                </html>
                `
                res.write(deleteHtml)
             break;
         case '/edit.html':
                var editHtml = `
                <html>
                   <head>
                       <meta charset='utf-8'/>
                       <title>紫薯的服务</title>
                   </head>
                   <body><h1>edit</h1></body>
                </html>
                `
                res.write(editHtml)
             break;
         case '/find.html':
                var findHtml = `
                <html>
                   <head>
                       <meta charset='utf-8'/>
                       <title>紫薯的服务</title>
                   </head>
                   <body><h1>find</h1></body>
                </html>
                `
                res.write(findHtml)
             break;
        default:
            //当请求地址不在以上时,显示404
            res.end('<h1>404</h1> bed request,nothing can show you  '+req.url)
     }
 }
 res.end();
})

server.listen(8888)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值