在Node中专门提供了一个核心模块:http,http这个模块的职责就是帮你创建编写服务器
方法:
1.加载http核心模块,
var http = require('http');
2.使用http.createSever()方法创建一个Web服务器,返回一个Server实例
var server=http.createServer();
3.可以用这个服务做什么?
- 提供服务,对数据的服务
- 发请求
- 接收请求
- 处理请求
- 给个反馈
- 注册request请求事件
request请求事件接收两个参数,
Request:请求对象,可以用来获取客户端的一些请求
Response:响应对象,可以用来给客户端发送信息
response对象有一个方法:write,可以用来给客户端发送响应数据,可以多次使用,但是最后都一定要用end来结束响应, 否则客户端会一直等待;
- 当客户端请求发过来,就会自动的触发服务器的request请求事件,然后执行回调函数;
server.on('request',function){
console.log('收到客户端的请求了请求路径是:'+request+url);
console.log('请求我的客户端的地址是:', req.socket.remoteAddress, req.socket.remotePort)
response.write('hello')
response.write(' nodejs')
response.end()
}
也可以使用简单一点的操作,在end的同时直接发送数据;
res.end('hello nodejs')
4.绑定端口号,启动服务器;
server.listen('3000',function(){
console.log('服务器启动已经产生了,可以访问了');
})
Note:当代码修改好了之后,需要关闭服务器,重新开启服务器才有效;不管在请求url后面加上任何东西,都不会改变请求返回的响应内容,因为服务器只能处理到你代码做的那一步,不能做出其他的;
根据不同的请求路径发送不同的响应结果:
1.获取请求路径;
res.url获得到的是端口号的那部分路径,所有的url都以 / 开头
2.判断路径处理响应;
var url = req.url
if (url === '/') {
res.end('index page')
} else if (url === '/login') {
res.end('login page')
} else if (url === '/products') {
var products = [{
name: '苹果 X',
price: 8888
},
{
name: '菠萝 X',
price: 5000
},
{
name: '小辣椒 X',
price: 1999
}
]
// 响应内容只能是二进制数据或者字符串
// 数字
// 对象
// 数组
// 布尔值
res.end(JSON.stringify(products))
} else {
res.end('404 Not Found.')
}
})
- ip是用来定位计算机的
- 端口号用来定位具体的应用程序
- 一切需要联网通信的软件都会占用一个端口号
- 端口号的范围是0~65536
- 在计算机中有一些默认的端口号,最好不要去使用(例如,http服务的80)
- 可以同时开启多个服务,但一定要确保不同服务占用的端口号不一样才可以,同一个端口号只能被一个程序占用