Node.js后端开发 - 基础篇 #9 web 服务器 part 1 介绍

本文详细介绍如何使用Node.js的http模块创建一个基本的Web服务器。从理解Web服务器的请求与响应流程,到具体代码实现,包括服务器创建、监听及响应纯文本内容。同时,提供了代码优化技巧,帮助读者快速掌握Web服务器的基础构建。

文章目录

web服务器请求和响应简单介绍

实现一个简单的web服务器

创建服务器实现监听响应纯文本

代码优化简洁


上一篇文章我们介绍了nodejs的流和管道,如:如何通过流去读取文件内容和写入数据到文件等。详见: Node.js后端开发 - 基础篇 #8 流和管道,这篇文章我们来介绍一下 http模块 ,它可以实现一个web服务器,那么什么是web服务器呢?

web服务器请求和响应简单介绍

我们用浏览器打开一个网址,如:www.baidu.com,我们访问的就是web服务器,这个web服务器就是放在远程百度公司某个主机上的,那么我们的浏览器就是一个客户端,当我们在浏览器中输入网址的时候,其实已经向web服务器上发送了一个请求,这个请求带了一些参数给web服务器,比如一些请求头信息之类的,当web服务器接收到这个请之后,它就会进行处理,然后把响应信息传给浏览器,这样就做了一次完整的web请求!

然后我们在浏览器上就可以看到一些信息,如:请求地址、请求数据格式、编码、语言、cookie、服务器版本、请求内容等等

其他一些内容可以参考官方api:HTTP | Node.js v9.11.2 Documentation

实现一个简单的web服务器

之前的内容都是关于http协议的,它的内容我们不会讲的太深入,现在我们来实现一个简单的web服务器!

创建服务器实现监听响应纯文本

var http = require('http');//引入http库

//创建服务器
var server = http.createServer(function (request, response) {
    console.log('request received');
    //1、状态码  2、响应返回的内容类型
    response.writeHead(200, {'Content-type': 'text/plain'});

    //response.write('hello from server');
    //response.end();

    //这样写也可以,同上面两句
    response.end('hello from server');

    //另外 response.write 是可以写多个的,如下:
    // response.write('<html>');
    // response.write('<body>');
    // response.write('<h1>Hello, World!</h1>');
    // response.write('</body>');
    // response.write('</html>');
    // response.end();

});

//1、监听端口号  2、ip地址(这里是本地地址)
server.listen(3000, '127.0.0.1');
console.log('server started on localhost port 3000');

我们在终端,运行启动服务器进行监听,如下:

MacBook-Pro:hello-nodejs luminal$ node app
server started on localhost port 3000

然后我在谷歌浏览器中,输入地址:http://localhost:3000

这时候终端信息为如下

MacBook-Pro:hello-nodejs luminal$ node app
server started on localhost port 3000
request received
request received

为什么刷新会请求两遍?原因是浏览器默认会先发请一个标题图标的请求,即浏览器还会请求一次favicon.ico 所以是2遍

代码优化简洁

上面的代码我们一般是把函数提出来写的,所以代码可以这样写,如下:

var http = require('http');

var onRequest = function (request, response) {
    console.log('Request received');
    response.writeHead(200, { 'Content-Type': 'text/plain' });
    response.end('hello from server');
}

var server = http.createServer(onRequest);

server.listen(3000, '127.0.0.1');
console.log('server started on localhost port 3000');

还有需要注意的是,我们在测试的时候,点击终端的清理按键即可停掉服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值