node.js第十课(HTTP服务器)

Node.js开发入门—HTTP文件服务器 HelloWorld示例只有演示意义,这次我们来搞一个实际的例子:文件服务器。我们使用Node.js创建一个HTTP协议的文件服务器,你可以使用浏览器或其它下载工具到文件服务器上下载文件。 阅读详情


概念:Node.js提供了http模块。其中封装了一个高效的HTTP服务器和一个简单的HTTP客户端。
    http.server是一个基于事件的HTTP服务器。内部用C++实现。接口由JavaScript封装。
    http.request则是一个HTTP客户端工具。用户向服务器发送请求。
一、HTTP服务器
    http.Server实现的,它提供了一套封装级别很低的API,仅仅是流控制和简单的解析,所有的高层功能都需要通过它的接口
    前面讲解的app.js案例
    代码分析:
    http.createServer创建了一个http.Server的实例,将一个函数作为HTTP请求处理函数。这个函数接受两个参数,请求对象req和响应对象的res。
    res显式写入了响应代码200(表示请求成功),指定响应头,写入响应体。调用end结束并发送。该实例调用listen函数,启动服务器并监听3000端口。
  1.http.Server的事件
    http.Server是一个基于事件的HTTP服务器,所有请求都被封装到独立的事件,开发者只要对它的事件编写相应的函数即可实现HTTP服务器的所有功能,
    它继承与EventEmitter,提供了以下事件:
        request:当客户端请求到来时,该事件被触发,提供两个参数req和res,分别是http.ServerRequest和http.ServerResponse的实例,表示请求和响应信息。
        connection:当TCP连接建立时,该事件被触发,提供一个参数socket,为net.Socket的实例(底层协议对象)。
        close:当服务器关闭时,该事件被触发。
    除此之外还有checkContinue、upgrade、clientError事件。
    最常用和关心的是:request事件,http提供了一个捷径,http.createServer([requestListener])
    显式实现方法:
    案例:server.js
    var http = require('http');
    var server = new http.Server();
    server.on('request',function(req,res){
        res.writeHead(200,{'Content-Type':'text/html'});
        res.write('<h1>NODE.JS</h1>');
        res.end('<p>hello,world</p>');
    });
    server.listen(3000);
  2.http.ServerRequest请求的信息
    此对象是后端开发者最关注的内容,它一般由http.Server的request对象发送,作为第一个参数传递,通常简写成request或req。
    HTTP请求分为两部分:请求头和请求体。,请求内容短的直接在请求头解析完成后立即读取,而请求体可能相对较长,需要一定的时间传输,因此提供了3个事件用于控制请求体传输。
    (1)data:当请求体数据到来时,该事件被触发,该事件一共一个参数chunk,表示接受到的数据。
    (2)end:当请求体数据传输完成时,该事件被触发,此后将不会再有数据到来。
    (3)close:用户当前请求结束时,该事件被触发,不同于end,如果用户强制终止了传输,也会触发close
        ServerReuqest的属性
            complete:客户端请求是否已经发送完成
            httpVersion   HTTP协议版本,通常是1.0或1.1
            method        HTTP请求方法,如:GET,POST
            url           原始的请求路径,例如/pc/getUser或/user?name=marico
            headers       HTTP请求头
            trailers      HTTP请求尾(不常见)
            connection    当前HTTP连接套接字,为net.Socket的实例
            socket        connection属性的别名
            client        client属性的别名
  3.获取GET请求内容
    由于GET请求直接被嵌入在路径中,URL完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET的参数,Nodejs的url模块中的parse函数提供了这个功能
    实例:get.js
 var http=require('http');
        var urls=require('url');
     var util=require('util');

    http.createServer(function(req,res){
         res.writeHead(200,{'Content-Type':'text/plain'});
        res.end(util.inspect(urls.parse(req.url,true)));
 }).listen(3000);
  4.获取POST请求内容
    POST请求的内容全部都在请求体中,http.ServerRequest并没有一个属性内容为请求体,原因是等待请求体传输可能是一件耗时的工作。譬如上传文件。
    恶意的POST请求会大大消耗服务器的资源。所以Nodejs是不会解析请求体,当你需要的时候,需要手动来做。
    实例:post.js
    var http=require('http');
    var querystring=require('querystring');
    var util=require('util');
    http.createServer(function(req,res){
        var post='';
        //注册data事件监听函数,每当接受请求体的数据
        req.on('data',function(chunk){
            post+=chunk;
        });
        req.on('end',function(){
     //解析成字符串格式的post为真正的post请求格式
     post=querystring.parse(post);
     //向前端返回
     res.end(util.inspect(post));
        });
    }).listen(3000);
  5.http.ServerResponse返回给客户端的信息
    决定了用户最终能到的结果,它是由http.Server的reponse对象发送的,作为第二个参数传递。一般为response或res
    主要的三个函数:
    response.writeHead(statusCode,[headers]):向请求的客户端发送响应头。
    statusCode是HTTP的状态码,如200为成功,404未找到等。
    headers是一个类似关联数组的对象,表示响应头的每个属性。
    response.write(data,[encoding]) 向请求客户端发送相应内容,data是buffer或字符串,encoding为编码
    response.end([data],[encoding]) 结束响应,告知用户所有发送已经完成,当所有要返回的内容发送完毕,该函数必须被调用一次,如果不调用,客户端永远处于等待状态
                   

Node.js快速搭建简单的HTTP服务器并发布公网远程访问 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation(原为 Node.js Foundation,已与 JS Foundation 合并)持有和维护,亦为 Linux 基金会的项目。Node.js 采用 Google 开发的 V8 运行代码,使用事件驱动、非阻塞和异步输入输出模型等技术来提高性能,可优化应用程序的传输量和规模。这些技术通常用于资料密集的即时应用程序。Node.js 大部分基本模块都用 JavaScri 阅读详情

相关推荐

Node.js实现的小型HTTP服务器:httpd.js

在Node.js中,你可以通过继承类来创建自己的自定义事件发射器。例如:');});上面的代码创建了一个MyEmitter类的实例,并为event事件添加了一个监听器,当调用时,会触发这个事件并执行回调函数。Node.js的fs模块提供了对文件系统进行操作的API。无论是在服务器端读取配置文件,还是处理上传的文件,fs模块都能提供强大且灵活的文件操作能力。fs模块支持异步、同步以及基于流的方式访问文件系统。

weixin_35294091的博客 963

node.js基础(二)

一 path路径模块 1.1 导入 const path = require('path') 1.2 路径拼接 path.join() 示例: const pathStr = path.join('/a', '/b/c', '../../', './d', 'e') console.log(pathStr) // \a\b\d\e const pathStr2= fs.readFile(__dirname + '/files/1.txt') console.log(p...

weixin_59855361的博客 1304

深入掌握JavaScript Node.js开发

本文还有配套的精品资源,点击获取 简介:JavaScript是前端开发中的主导语言,在Node.js环境下的服务器端编程中也显示出重要性。Node.js是一个基于V8引擎的跨平台JavaScript运行环境,具有事件驱动和非阻塞I/O特性,适用于构建高性能的并发服务器。该压缩包文件可能包含有关Node.js核心概念和模块的资料,比如模块化设计、文件系统操作、HTTP服务器创...

weixin_28809949的博客 2139

server.on

这是一个字符串,指定了要处理的事件类型。在 HTTP 服务器中,常见的事件类型包括 HTTP 请求方法(如 "GET"、"POST" 等)以及特定的路由路径(如 "/hello")。它用于定义当接收到特定 HTTP 请求时应该执行的操作。函数,可以设置多个不同的路由路径和事件类型的处理程序,以实现不同的功能,例如处理不同路径下的 HTTP 请求,或根据请求方法执行不同的操作。:这是一个函数,指定了当事件发生时应该执行的操作。处理函数通常会接收一个参数,这个参数是一个回调函数,用于发送 HTTP 响应。

robotplayer1的博客 1492

构建Node.js服务器:HTTP请求分发实战

本文还有配套的精品资源,点击获取 简介:本文首先介绍了Node.js的基础概念,包括其作为JavaScript运行环境的特性以及非阻塞I/O模型。然后深入探讨了HTTP请求的分发机制,特别是在使用Express框架时的HTTPDispatcher模块。文章通过详细的步骤指导如何创建一个基础的Node.js服务器,包括安装Node.js、初始化项目、引入http模块、创建服务...

weixin_35972981的博客 1364

A Mathematical Framework for Transformer Circuits—(一)

transformer数学理解理论

qq_42208244的博客 2665

Node.js笔记

一、内置 fs 模块 1.1 导入fs模块 const fs = require('fs') 1.2 fs.readFlie() 作用:读取文件 写法:fs.readFlie(path[,options],callback) [必选]参数1:读取文件的存放路径 [可选]参数2:读取文件时候采用的编码格式,一般默认指定 utf8 [必选]参数3:回调函数,拿到读取失败和成功的结果 err dataStr fs.readFile('./files/11.txt', 'utf8',

一块语法糖的博客 2144

从零构建HFSS连接器仿真模型:以SMP接口的精准复现为例

本文详细介绍了如何从零构建HFSS连接器仿真模型,以SMP接口的精准复现为例。通过获取官方模型、导入技巧、信号路径提取和介质结构复现等步骤,帮助工程师避免常见错误,提升高频电路仿真的准确性。文章特别强调了模型精度对仿真结果的影响,并提供了实用的调试和管理建议。

weixin_29041767的博客 431

Node.js中server.on()方法中回调函数的参数

确保你监听的事件与你正在使用的服务器类型(例如HTTP服务器或TCP服务器)相匹配,并且正确处理回调函数的参数。在大多数情况下,Node.js文档会详细说明每个事件及其回调函数的参数。

jack_kxc的博客 774

树莓派4B网线直连Windows全流程:从IP查询到SSH登录避坑指南

本文提供了一份详细的树莓派4B通过网线直连Windows电脑的实战指南。核心步骤包括配置Windows网络共享、查询树莓派IP地址以及通过SSH进行安全登录与初始配置。文章深入解析了直连的网络原理,并重点分享了使用CMD命令和工具定位IP、避免常见错误的避坑技巧,帮助用户在没有显示器或路由器的环境下快速完成树莓派初始化。

grape的博客 1081

Oracle EBS(R12+)通过Multi-Org 多组织架构、Multi-Ledger 多账簿、SLA 子分类账会计、多币种引擎、多会计政策并行五大核心能力,为跨国企业提供一体化、自动化、合规的

Oracle EBS(R12+)提供全球会计核算解决方案,通过Multi-Org多组织架构实现跨国集团数据隔离与共享,支持四层组织结构(业务组→法律实体→经营单位→库存组织)。Multi-Ledger多账簿功能允许一笔业务多准则自动核算,包含主账簿、辅助账簿和报告币种。系统内置多币种处理引擎,覆盖全流程货币业务,支持自动重估、再计量和折算。通过SLA子分类账会计实现多会计政策并行处理,满足不同国家会计准则和税制要求。该方案可同时支持本地法定、集团合并及管理分析需求,实现全球财务数据集中管理,提升合规性和运营

金牌架构师 554

node.js 初识node.js,运行在服务端的 JavaScript(一)

文章目录1.浏览器原理2.浏览器访问服务器过程3.web开发本质4.什么是node.js?5.node.js有哪些特点?6.安装Node.js 1.浏览器原理 2.浏览器访问服务器过程 https://edu.aliyun.com/lesson_1730_14083?spm=5176.10731542.0.0.4fb815f2VGm9PU#_14083 请求报文和相应报文。 3.web开发本质 一般web都是下面三点一样: 1.请求,客户端发起请求。 2.处理,服务器处理请求。 3.响应,服务器将处理结果

探索技术与实践的旅程,分享编程经验与工具使用心得,助力开发者提升技能。 1万+

PCL:SAC-IA+ICP配准

【代码】SAC-IA+ICP配准。

m0_71596228的博客 1018

什么是Node.js

JavaScript是一种Web前端语言,Node.js让JavaScript成为服务器端脚本语言。

m0_56649557的博客 9710

基于YOLOv8的表面裂痕等缺陷检测:深度学习与UI界面的实践

本文详细介绍了如何使用YOLOv8进行表面裂痕等缺陷检测,并结合图形用户界面展示检测结果。通过YOLOv8的强大能力,我们可以实现高效、准确的表面缺陷检测,提升工业产品的质量控制水平。未来,随着深度学习技术和数据集的不断发展,表面缺陷检测的精度和速度将不断提升,应用领域也将进一步拓展。希望本文的实践能够为深度学习在工业检测领域的应用提供一些启示。

YOLO 551

YOLOv13改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计

实时检测器架构的轻量级设计GsConv。

Limiiiing的博客 91

【Node.js】http服务器详解

Node.js 内置了一个功能强大的 HTTP 模块,可以让开发者轻松创建 HTTP 服务器。使用这个模块,你可以监听特定的端口,处理客户端请求,并返回响应。HTTP 模块是 Node.js 构建服务器端应用的核心工具之一,支持处理常见的 GET、POST 等请求方法。Node.js 的 HTTP 模块为开发者提供了强大的工具来构建高效的 Web 服务器。通过灵活地处理请求、响应和路径解析,我们可以轻松创建功能丰富的后端应用。

lph159的博客 1374

2026年职业院校技能大赛中职移动应用与开发—数字生活APP原型设计参考答案(含素材)

本模块以产品原型为目标,考查参赛选手熟练收集、分析和归纳客户需求,清晰梳理业务流程,熟练使用UI设计软件进行产品UI/UE设计,掌握正确的UI配色方案,设计出符合业务逻辑的人体工学移动App 原型优秀作品。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 572

Node.js 创建和管理 HTTP 服务器

创建和管理 HTTP 服务器是 Node.js 的核心功能之一。通过使用http模块,你可以创建基础的 HTTP 服务器,而使用 Express 框架可以更简洁地处理路由、中间件和静态文件等任务。理解如何处理请求和响应,以及如何使用 Express 进行开发,将为你构建 Web 应用程序和 API 提供强大的基础。

疯狂假前端的博客 1611

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Node.js的http模块:创建HTTP服务器、客户端示例

要使用http模块,只需要在文件中通过require('http')引入即可。http模块是Node.js原生模块中最为亮眼的模块。传统的HTPP服务器会由Apache、Nginx、IIS之类的软件来担任,但是Node.js并不需要。Node.js的http模块本身就可以构建服务器,而且性能非常可靠。

夏天又到了的专栏 1667

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

Node.js 创建 HTTP 服务器:5步轻松搞定,你会了吗?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它允许你在服务器端运行 JavaScript 代码,非常适合处理高并发的 I/O 操作。Node.js 内置了一个功能强大的 HTTP 模块,可以让你轻松创建 HTTP 服务器。通过这个模块,你可以监听特定的端口,处理客户端请求,并返回响应。通过本文的介绍,相信你已经学会了如何在 Node.js 中使用http模块创建一个简单的 HTTP 服务器。

java专栏 1444

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

如何在Node.js中创建HTTP服务器?

通过本文的学习,我们掌握了在 Node.js 中创建一个 HTTP 服务器的基本步骤和方法,同时通过引入路由处理和动态内容响应等高级功能,进一步提升服务器的实用性和灵活性。希望这些内容能够帮助你在面试中应对自如,也希望你能在实际项目开发中充分运用这些知识,构建出更加健壮和高效的服务器应用。创建 HTTP 服务器只是 Node.js 强大功能的冰山一角。深入学习 Node.js,你将发现更多有趣且强大的特性和模块,诸如文件系统操作、流处理、事件驱动开发等。最后问候亲爱的朋友们,并邀请你们阅读我的全新著作。

有我更精彩的博客 1763

【Node.js】使用 Node.js 需要了解多少 JavaScript?

总的来说,使用 Node.js 开发并不要求你掌握所有 JavaScript 的高级知识,但了解 JavaScript 的基础和异步编程的核心概念,将大大提高你的开发效率。通过不断学习和实践,你将能够利用 Node.js 构建出高效、可扩展的应用程序。希望本文能帮助你了解在学习 Node.js 之前需要掌握的 JavaScript 知识,帮助你在 Node.js 的开发路上走得更远。祝你编码愉快!

佚名程序员 1940

如何使用Node.js创建一个简单的 HTTP 服务器?请写出示例代码

HTTP 服务器是一种处理 HTTP 请求并响应客户端请求的服务器。简单来说,它负责接收用户发送的请求,并将相应的数据发送回去。这些请求可以是来自浏览器、移动设备或任何其他可以发起 HTTP 请求的客户端。在这篇文章中,我们学习了如何使用 Node.js 创建一个简单的 HTTP 服务器。通过简单的几步,你不仅可以创建自己的服务器,还可以使用 JavaScript 处理 HTTP 请求。Node.js 的事件驱动和异步特性使得它非常适合用来构建高性能的网络应用程序。

有我更精彩的博客 1622

Node.js HTTP模块详解:创建服务器、响应请求与客户端请求

本文详细介绍了Node.js的核心模块http,它支持创建HTTP服务器和客户端。文章涵盖了创建HTTP服务器、响应请求的方法、客户端请求的发送、处理POST请求、HTTP状态码的使用、MIME类型的应用以及如何返回JSON响应。通过这些关键知识点和代码示例,开发者可以深入了解Node.js的HTTP通信机制,并在实际项目中灵活运用。

x15514104477的博客 2779
上一篇: linux下打开、关闭tomcat,实时查看tomcat运行日志
下一篇: node.js开发平台
栖息
博客等级 码龄15年 64粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值