Node.js 之 http模块

2020-07-06  本文已影响0人  北piao青年

http模块

引入http模块

开启一个本地服务器需要Node.js中http核心模块
http--模块提供了搭建本地服务器的API,首先我们在项目中引入;

let http = require('http')

创建服务器实例

引入之后我们利用http.createServer()方法得到一个服务器实例。

let server = http.createServer() // createServer()方法返回一个server实例,所以我们需要一个变量来接收

经过以上两步,我们已经搭建好了一个服务器实例,然后我们给服务器实例绑定接收request的事情处理函数,代码如下:

监听请求

server.on('request', (req, res) => {
    console.log(req.ur l) // 获取到请求的路径(请求路径永远以“/”开头)
})
// 给服务器绑定接收请求的处理事件,当服务器接收到客户端发送的请求后,会调用后面的处理函数,处理函数接收两个参数:请求信息对象,响应信息对象。

绑定监听端口号

绑定监听端口号,开启服务器。代码如下:

server.listen(3000, () => {
    console.log('服务器开启成功,可以通过访问http://127.0.0.1:3000/来获取数据~~')
})
// server.listen()用来绑定监听的端口号,可以传入第二个参数,当服务器开启成功后,触发后面的回调函数

例子

需求说明

当我们访问“http://127.0.0.1:3000/login”, 服务器返回 “login page”
当我们访问“http://127.0.0.1:3000/register”, 服务器返回 “register page”
当我们访问“http://127.0.0.1:3000/”, 服务器返回 “index page”
当我们访问“http://127.0.0.1:3000/product”, 服务器返回 产品信息列表
我们实现这个需求,只需要在绑定服务器监听的事件处理函数中获取到用户的请求路径,然后根据不同路径返回不同数据即可

代码实现

创建 httpserver.js文件

let http = require('http')

let server = http.createServer()

server.on('request', (req, res) => {
    let url = req.url //得到请求的路径 (请求的路径永远以‘/’开头)
    if (url === '/') {
        res.end('index page')
    } else if (url === '/login') {
        res.end('login page')
    } else if (url === '/register') {
        res.end('register page')
    } else if (url === '/product'){
        let arr = [
                {
                    name: 'iphone X',
                    price: 8888
                },
                {
                    name: 'iphone 7',
                    price: 4320
                }
            ]
// 响应的数据类型必须是字符串或者二进制数据
        res.end(JSON.stringify(arr))
    } else {
        res.end('404 NOT found')
    }
})

server.listen(3000, () => {
    console.log('服务器启动成功了,,可以访问http://127.0.0.1:3000/啦')
})

运行服务

node httpserver.js

分别请求路径,我们看到我们请求不同的路径,服务器给我们返回了不同的内容,并且显示在了网页中。


设置状态码和响应头

response.writeHead(200, { 'Content-Type': 'text/plain' });

设置响应头

response.setHeader('Content-Type', 'text/html');

写入内容

response.write(fileData);

结束响应

response.end();
上一篇下一篇

猜你喜欢

热点阅读