Node.js创建一个简单的http服务

// 导入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代码中设置允许所有端口访问

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值