nodejs之http介绍

本文详细介绍了Node.js中HTTP模块的使用,包括如何创建HTTP服务器、处理GET请求参数及URL解析。通过示例代码,读者可以快速掌握用HTTP模块开发Web应用的方法。

http是nodejs中一个非常重要的内置模块,用于开发http服务器和web应用程序。

创建一个http服务非常简单。

04_http.js

//04 http 介绍
 
//引入http 模块
var http=require("http");
 
//创建http服务器实例
var server =http.createServer(function (req,res) {
 
    res.writeHead(200,{'content-type':'text/html;charset=utf-8'});
 
    res.end("你好nodejs");
 
});
 
//监听本地端口 3000
server.listen(3000);
console.log("nodejs server run at 3000");

05_http_url_get.js

//05 http url get
//介绍 req 和res对象 、 url模块  、获取http get参数
var http=require("http");
var  url=require("url");
 
var server =http.createServer(function (req,res) {
    var reqUrl = req.url;
 
    if(reqUrl=='/favicon.ico'){//忽略 ico小图标
        return ;
    }
 
     
    console.log(reqUrl);
    //使用url模块  解析req.url 得到一个urlObj  对象
     var urlObj= url.parse(reqUrl,true);
     console.log(urlObj);
 
 
    res.writeHead(200,{'content-type':'text/html;charset=utf-8'});
    res.write('请求url: '+reqUrl+'<br/>');
    res.write('pathname: '+urlObj.pathname+'<br/>');  //requestPage
    res.write('get参数name: '+urlObj.query['name']+'<br/>'); //get 请求参数
    res.write('get参数age: '+urlObj.query['age']+'<br/>');//get请求参数
    res.write('search: '+urlObj.search+'<br/>'); //查询字符串  ?name=zhangsan&age=22
 
    // 浏览器输入  http://localhost:3000/about?name=zhangsan&age=22
    //urlObj 对象如下
    // Url {
//     protocol: null,
//         slashes: null,
//         auth: null,
//         host: null,
//         port: null,
//         hostname: null,
//         hash: null,
//         search: '?name=zhangsan&age=22',
//         query: { name: 'zhangsan', age: '22' },
//     pathname: '/about',
//         path: '/about?name=zhangsan&age=22',
//         href: '/about?name=zhangsan&age=22' }
 
    res.end();//结束响应
});
server.listen(3000);
console.log('nodejs server run at 3000');

 

### Node.js 的基本概念 Node.js 是一种基于 Chrome V8 JavaScript 引擎的 JavaScript 运行时环境,允许开发者使用 JavaScript 创建服务器端应用程序[^2]。它的设计目标是提供一种简单的方式来构建能够处理高并发 I/O 操作的应用程序。 --- ### Node.js 的工作原理 Node.js 使用事件驱动模型和非阻塞 I/O 来实现高效的异步编程模式。这意味着它可以同时处理大量的连接而不需要为每个连接创建单独的线程[^3]。通过这种方式,Node.js 能够显著减少资源消耗并提高性能。 以下是 Node.js 工作的核心机制: - **事件循环 (Event Loop)**:这是 Node.js 处理异步操作的关键部分。所有的 I/O 请求都会被放入事件队列中等待执行。 - **回调函数 (Callback Functions)**:每当某个任务完成时,相应的回调函数会被调用以继续后续逻辑。 - **模块化架构**:内置了许多核心模块(如 `http`、`fs` 和 `path`),这些模块提供了对 HTTP 协议支持、文件系统访问以及路径解析等功能的支持。 --- ### Node.js 的特点 #### 高效性和轻量级 由于采用了单线程事件循环结构而非多线程池方式来管理任务调度,因此即使是在硬件配置较低的情况下也能表现出良好的吞吐能力[^4]。 #### 跨平台兼容性 得益于其底层依赖于 Google's V8 engine 技术栈, 可轻松部署到不同操作系统之上(Windows/Linux/macOS). #### 开发效率提升 借助 npm(Node Package Manager), 用户可以便捷地安装第三方库或者发布自己的包供他人复用; 同时也促进了社区活跃度的增长. #### 易学易用 对于已经熟悉前端技术栈的人来说学习成本相对较小因为可以直接利用现有的javascript知识来进行服务端开发[^1]. --- ### 应用场景 根据上述提到的特点可知,nodejs特别适用于那些需要频繁进行网络通信但计算密集型较少的工作负载下: 1. **Web 服务器**: 构建 RESTful API 或者静态页面托管站点. 2. **实时应用**: 结合 WebSocket 实现聊天室功能或是推送通知给客户端用户更新状态变化情况等需求场合下的解决方案之一就是采用nodejs作为后台技术支持方案. 3. 数据流处理管道: 当面对海量数据传输过程中可能涉及到压缩解压转换编码等工作流程时也可以考虑引入此框架简化代码复杂程度的同时保持较高的运行速度. ```javascript // 示例代码展示如何设置一个基础 web server const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); }); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值