// 导入Node.js内置的http模块,用于创建HTTP服务器
const http = require('http');
// 使用http模块创建一个HTTP服务器
const server = http.createServer((request, response) => {
// 允许来自任意源的CORS请求 允许其他端口的访问
response.setHeader('Access-Control-Allow-Origin', '*');
response.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE');
response.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
// 处理根路径("/")的GET请求,返回简单的文本消息
if (request.url === '/') {
// 这里设置字符集,解决返回中文会乱码的问题
response.writeHead(200, { 'Content-Type': 'text/html;charset=utf-8' });
response.end("你好"); // 直接返回中文问候
// 处理/api/data路径的GET请求,返回JSON格式的数据
} else if (request.url === '/api/data') {
response.writeHead(200, { 'Content-Type': 'application/json' }); // 设置响应内容类型为JSON
response.end(JSON.stringify({ message: 'Hello from the server!' })); // 返回JSON消息
// 如果请求的URL既不是根路径也不是/api/data,则返回404状态码
} else {
response.writeHead(404); // 设置404 Not Found状态码
response.end(); // 结束响应,不发送额外数据
}
});
// 启动服务器,监听3000端口
server.listen(3000, () => {
console.log("服务已经启动,正在监听3000端口...");
});
新建一个js文件后如上代码后,在终端使用nodejs启动,使用浏览器输入http:127.0.0.1:3000/
这样,你就成功创建了一个Node.js服务器,并通过浏览器得到了响应。
注意事项
1.命令行ctrl+c停止服务
2.当服务启动后,更新js内代码必须重启在启动
3.'address already in use :::3000'端口号被占用,关闭占用的进程或者换一个端口号
4.http协议默认的端口号为80,https协议默认端口号为443,http服务开发常用的端口有3000,8080,8090,9000等
在html文件发起请求把数据放到页面上
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h3 id="data"></h3>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
// 定义一个异步函数,用于从服务器获取数据
const getData = () => {
// 使用axios发起GET请求到指定的API端点
axios.get('http://127.0.0.1:3000/api/data')
.then(result => { // 请求成功后的处理函数
// 获取id为"data"的元素,并将其内容设置为API响应中的message字段
document.querySelector("#data").innerHTML = result.data.message;
// 在控制台打印完整的响应对象,便于调试
console.log(result);
});
};
// 页面加载完成后立即调用getData函数发起请求
getData();
</script>
</body>
</html>
注意:浏览器默认启动端口不是3000,属于跨域,解决方法之一在js代码中设置允许所有端口访问