nodejs的http服务器模块
- nodejs搭建一个服务器, 浏览器访问服务器时, 服务器只是在终端打印浏览器的请求路径, 不会给客户端返回任何东西
//1.导入模块
const http = require('http');
//2.创建服务器
/*
req :request 请求对象 (负责存储浏览器的请求信息)
res : response 响应对象 (负责响应数据的对象)
*/
let server = http.createServer((req,res)=>{ //服务端每收到一个客户端请求都会执行一次该回调函数,这个函数会执行多次
console.log(decodeURI(req.url)); // req.url:获取客户端请求的路径; (如果请求路径有中文,则浏览器会进行URI编码, 直接体验就是, 在终端中打印的请求路径乱码, 所以这里进行decodeURI)
});
//3.开启服务器
/**
* @description:
* @param {type} 第一个参数: port 端口号 (每一个应用程序对应一个编号,称之为端口号)
* @param {type} 第二个参数: hostname 主机名(ip地址:每一台电脑有一个唯一的ip地址) 只能监听本机ip和连接的局域网ip,监听其他ip服务启动不起来; 如果不写监听, 默认就会监听本机ip (localhost 127.0.0.1以及局域网ip)
* @param {type} 第三个参数: 开启回调
* @return:
*/
server.listen(3000,'127.0.0.1',()=>{
console.log('服务器开启成功');
});
- nodejs搭建一个服务器, 浏览器访问服务器时, 服务器在终端打印浏览器的请求路径, 同时给客户端返回json格式数据
// 02-http模块响应客户端数据
//1.导入模块
const http = require('http');
//2.创建服务器
let server = http.createServer((req,res)=>{
console.log(req.url); // 打印浏览器的请求路径
res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"}) // 指明返回数据的字符设置, 防止乱码
res.end(JSON.stringify({name:'张三'})); // 返回json数据
// 注意点 : 服务端只能响应两种数据类型 字符串和二进制; 如果想要返回对象,则需要转成JSON (JS->JSON)
});
//3.开启服务器
server.listen(3000,()=>{
console.log('success');
});
// 03根据浏览器的不同请求, nodejs服务响应不同数据
//1.导入模块
const http = require('http');
//2.创建服务器
let server = http.createServer((req,res)=>{
if(req.url == '/'){ // (1)如果请求路径为 / ,则响应返回index
res.end('index');
}else if(req.url == '/login'){ //(2)如果请求路径为/login,响应返回登录页
//防止中文乱码
res.writeHead(200,{
'Content-Type':'text/plain;charset=utf8'
});
res.end('这是登录页');
}else{ //(3)如果是其他请求,则返回404
res.end('404 not found')
};
});
//3.开启服务器
server.listen(3000,()=>{
console.log('success');
});
// 04. 根据浏览器不同的请求, nodejs服务响应浏览器相应的html文件
/*
需求
(1)如果路径是 / : 返回index.html
(2)如果路径是 /login : 返回login.html
(3)如果路径是 /list : 返回list.html
(4)如果路径是 错误路径 : 返回404.html
*/
//1.导入模块
const http = require('http');
const fs = require('fs');
const path = require('path');
//2.创建服务器
let server = http.createServer((req, res) => {
if (req.url == '/') {
//返回index.html : fs模块读取文件返回)
fs.readFile(path.join(__dirname, 'index.html'), (err, data) => {
if (err) {
throw err;
} else {
//3.响应
res.end(data);
}
})
} else if (req.url == '/login') {
//返回login.html
fs.readFile(path.join(__dirname, 'login.html'), (err, data) => {
if (err) {
throw err;
} else {
//3.响应
res.end(data);
}
})
} else if (req.url == '/list') {
//返回list.html
fs.readFile(path.join(__dirname, 'list.html'), (err, data) => {
if (err) {
throw err;
} else {
//3.响应
res.end(data);
}
})
} else {
//返回404.html
fs.readFile(path.join(__dirname, '404.html'), (err, data) => {
if (err) {
throw err;
} else {
//3.响应
res.end(data);
}
})
}
});
//3.开启服务器
server.listen(3000, () => {
console.log('success');
});
注意:
电脑和手机连接同一个wifi, 然后在电脑启动服务(使用默认ip), 这时手机也可以直接访问到电脑启动的服务, 手机访问的地址应该是**http://局域网ip:服务端口**
(可以搭建node服务器,手机访问html文件, 检查在手机的布局有没有问题)