Node.js 之 http模块

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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值