nodejs-http服务

NodeJS http模块(一)——简单的请求和服务器建立 一个坑的基础是另一个坑的填满 所以跳坑会越跳越深 当你注视着坑的时候 坑连鸟都难得鸟你。 这次我决定开个新坑,node.js的http模块,因为看experss的定义说是对node.js的http模块的补充,于是去拜读了一下node.js的Http模块,并且记录一下心得 简单的http的流程 建立TCP连接-> Web浏览器向Web服务器发送请求命令-> Web浏览器发送... 阅读详情

使用nodejs搭建http服务很简单,代码如下:

var http = require("http");//获取http对象
http.createServer(
  //匿名的回调函数,当有请求进来的时候调用该函数
  //req参数相当于J2EE的HttpServletRequest,
  //res参数相当于J2EE的HttpServletResponse
  function(req,res){
    console.log("run ... ");
    res.writeHead(200,{'Content-Type':'text/html'});//响应代码为200(正常) 已html方式展示
    res.write("<h1>Hello World</h3>"); //输出html代码
    res.end('<p>hello World</p>');//输出html代码,必须要调用res.end()方法,否则浏览器一直等待直到该方法调用
  }
).listen(3000); //监听3000端口

console.log(" HTTP Server is Listening at port 3000.");

打开浏览器输入http://127.0.0.1:3000/后回车即可看到界面


接下来对上面的代码进行改造:

var http = require("http");//获取http对象
var fs = require("fs"); //获取fs对象
http.createServer(
  //匿名的回调函数,当有请求进来的时候调用该函数
  //req参数相当于J2EE的HttpServletRequest,
  //res参数相当于J2EE的HttpServletResponse
  function(req,res){
    console.log("run ... ");
    res.writeHead(200,{'Content-Type':'text/html'});//响应代码为200(正常) 已html方式展示
  
	//异步读取数据
	fs.readFile("app02.html","utf-8",function(err,data){
		if(err){//如果出现错误则直接显示错误原因
			res.end(err);
		}else{//如果成功读取文件则返回文件内容
			res.end(data.toString());
		}
	});


  }
).listen(3000); //监听3000端口

console.log(" HTTP Server is Listening at port 3000.");

打开浏览器输入 http://127.0.0.1:3000/ 后回车即可看到界面



 

 

 接下来引入新的模块,对请求的url进行解析

var http = require("http");//获取http对象
var url = require("url");//获取url对象
var querystring = require("querystring");//获取querystring对象
http.createServer(
  //匿名的回调函数,当有请求进来的时候调用该函数
  //req参数相当于J2EE的HttpServletRequest,
  //res参数相当于J2EE的HttpServletResponse
	function(req,res){
	  	res.writeHead(200,{"Content-Type":"text/html"});
	  	//获取请求地址
	  	var requresturl = req.url;
	    res.write("request url:" + requresturl + "<br/>");
	    //请求的路径
	    var pathname = url.parse(req.url).pathname;
	    res.write("pathname:" + pathname + "<br/>");
	    //请求的参数
	    var querystr = url.parse(req.url).query;
	    res.write("query str : " + querystr + "<br/>");

	    //请求的地址进行所有属性的解析
	    var obj = url.parse(req.url);
	    res.write(JSON.stringify(obj)+"<br/>");
	    res.write("<hr/>");

	    //请求的参数转为JSON格式
	    var params = querystring.parse(querystr);
	    res.write(JSON.stringify(params)+"<br/>");
	    res.write("<hr/>");
	    
	    res.end("please input a url like  : http://127.0.0.1:3000/aa/b/c/a.do?a=1&b=4");
	}
).listen(3000); //监听3000端口

console.log(" HTTP Server is Listening at port 3000.");

运行以上代码后打开浏览器输入 http://127.0.0.1:3000/aa/b/c/a.do?a=1&b=4 可以看到结果

-


上例中对请求的地址进行了解析,对于网站的所有请求,正常的思维应该是什么样的请求应如何处理,例如/booklist请求应展示一个列表  /bookinfo?id=1为展示id为1的图书的详细信息,有了上面对url模块的引用就可以根据请求地址进行处理了。


下载文件的事例:

var http = require("http");//获取http对象
var fs = require("fs");
http.createServer(
  //匿名的回调函数,当有请求进来的时候调用该函数
  //req参数相当于J2EE的HttpServletRequest,
  //res参数相当于J2EE的HttpServletResponse
	function(req,res){
		//设置相应代码为200  content-type为图片 对于各种文件的content-type请baidu..
	  	res.writeHead(200,{"Content-Type":"image/jpeg"});
	  	//异步读取文件流
	  	var stream = fs.createReadStream("ly.jpg");
	  	//读取文件的时候触发
	  	stream.on("data",function(data){
	  		res.write(data);
	  	});
	  	//数据读取完成触发
	  	stream.on("end",function(){
	  		res.end();
	  	});
	  	
	}
).listen(3000); //监听3000端口

console.log(" HTTP Server is Listening at port 3000.");
上面例子仅仅是让大家了解content-type属性



以上内容都是get请求,下面处理post请求,代码如下:

var http = require("http");//获取http对象
var querystring = require("querystring");
var util = require("util");
http.createServer(
  //匿名的回调函数,当有请求进来的时候调用该函数
  //req参数相当于J2EE的HttpServletRequest,
  //res参数相当于J2EE的HttpServletResponse
	function(req,res){
	  	console.log(" deal request : " + req.url);
	  	var post= "";
	  	//当接受到数据的时候触发
	  	req.on('data',function(chunk){
	    	console.log('accept date :' + chunk);
	    	post += chunk;
	    });

	  	//数据接受完时触发
	    req.on('end',function(){
	    	console.log('request date end');
	    	post = querystring.parse(post);
	    	res.writeHead(200,{'Content-Type':'text/html'});
	    	//res.end(util.inspect(post));
	    	console.log("data:" + JSON.stringify(post));
	    	res.end(JSON.stringify(post));
	    });

	}
).listen(3000); //监听3000端口

console.log(" HTTP Server is Listening at port 3000.");
以上是服务,运行服务后用浏览器打开html,代码如下:

<html>
<head>
<meta charset="utf-8"/>
<script>
function submitPost(){
	var url = document.getElementById("submitUrl");
	document.getElementByid("theForm").action=url;


}
</script>
</head>
<body>
<form method="post" action="http://192.168.1.113:3000" id="theForm">
提交地址:例如http://192.168.1.113:3000<br/>
<input type="text" style="width:300px;" id="submitUrl" name="submitUrl" value="http://192.168.1.113:3000"/>
<hr/>
name:<input name="name" type="text" value="name_value"/>
<br/>
age:<input name="age" type="text" value="age_value"/>
<input type="submit" value="submit" onclick="submitPost()"/>
</form>
</body>
</html>
点击提交后查看后台就可看到输出内容




手把手教你用Copilot插件在Obsidian里免费接入DeepSeek-R1(附硅基流动API密钥获取) 本文详细介绍了如何通过Copilot插件在Obsidian中免费接入DeepSeek-R1模型,实现智能知识管理。从硅基流动API密钥获取到插件配置,再到高级功能调优和实战应用技巧,手把手教你打造AI驱动的个人知识库。 阅读详情

相关推荐

KUKA .RSI 软件包

KUKA RSI软件包通过XML文件使得机器人与外部设备(传感器通讯)通讯成为了可能,但仍存在诸多限制,该模块最多允许9台设备进行连接,有限的IO口,匮乏的功能,并且需要投入大量精力琢磨相关说明文档。为此开发人员针对KUKA实时通讯,做了一些开源的接口使得上位机与机械臂的通讯更为简单。

huhu7777的博客 3289

NodeJs——(8)http.ServerRequest的过程

(25)http.ServerRequest的过程 ①http.ServerRequest提供了3个事件用于控制请求体传输: 【1】data:当请求体数据到来时,该事件被触发,提供一个参数给回调函数,是接受到的数据,该事件可能被多次调用(所有data按顺序的集合,是请求体数据)。如果该事件没有被监听,请求体将被抛弃; 【2】end:当请求体数据完成...

weixin_33762321的博客 603

Windows10完美驱动Apple Studio Display:从雷电接口到亮度调节全攻略

本文详细介绍了如何在Windows10系统上完美驱动Apple Studio Display,涵盖雷电接口兼容性、亮度调节及色彩管理等关键问题。通过实测对比不同转接方案和显卡兼容性,推荐使用贝尔金VR线和NVIDIA GTX-1660显卡,并提供了BootCamp驱动安装和亮度调节的终极解决方案,帮助用户实现最佳显示效果。

elastic6hunter的博客 1119

node.js学习12--使用nodemon来自动重启http服务

使用 nodemon 来自动重启http服务 每次修改代码之后,都需要重启http服务器: 进入控制台。 按下ctrl+c,停止已有http服务器。 手动运行:node index.js 来重启服务器。 这会很麻烦。 有没有一个工具能自动检测到代码的修改并自动重新运行代码呢? 有,它叫nodemon。 安装 nodemon 通过npm包管理工具来进行安装。任意打开一个cmd命令行窗口,输入如下命令 npm install -g nodemon 此操作需要联网,根据网络速度所耗时间不同。 npm是一个

jyn15159的博客 474

C#操作SQLite数据库帮助类——SQLiteHelper

using System; using System.Collections.Generic; using System.Data.SQLite; using System.Data; namespace Com.ZCWL.Rock.Helper { public class SQLiteHelper { private static string connectionString =

跟健哥出去走走 2万+

《探秘 BME680温度湿度气压气体传感器模块:环境感知的卓越之选》:此文为AI自动生成

BME680 是一款由博世公司推出的集成环境传感器模块,在环境监测和物联网等领域中发挥着重要作用。它能够同时测量温度、湿度、气压和气体浓度等多个环境参数,为各种应用提供准确可靠的环境数据。该模块采用小巧的封装形式,便于集成到各种设备中,无论是智能家居、可穿戴设备还是工业监测系统,都能轻松适配。例如,在智能家居系统中,BME680 模块可以监测室内环境参数,如温度、湿度、气压和空气质量等。通过与智能家居控制器或智能手机应用程序的连接,用户可以实时了解室内环境状况,并根据需要进行调整。

zheng_ruiguo的专栏 1865

nodeJS重新启动服务器

首先创建一个server.js文件,写入如下代码 const http = require('http') const fs = require('fs') http.createServer(function(request, response) { console.log("requset come",request.url); const html = fs.readF...

u012957967的专栏 7671

ubuntu20.04安装UE4+Airsim环境

版本UE4.27+Airsim1.81

玖茸的博客 3380

nodeJS服务器的创建和重新启动

在 我们开发node 应用的时候,一但你的应用已经启动了,这个时候如果你修改了服务端的文件,那么要是这个修改起作用,你必须手动停止服务然后再重新启动,这在开发过程中无 疑是很烦人的一件事,最好是有一个能够监控所有变动文件的脚本,一单发现文件有变动则立即重启服务,重新加载刚刚修改过的文件。这里推荐一 个:nodemon。  首先为了是这个命令全局可用,最好我们进行全局安装:  npm i

Hi,印象钟情 1万+

Tesla v100 4张显卡组装机安装vllm和ollama在Ubuntu系统上的安装---AI大模型系统从零开始0032

本文提供Ubuntu22.04系统下vLLM的完整安装指南,适配4×32G Tesla显卡的单机4卡张量并行部署。教程包含:1)硬件要求(Ubuntu22.04、NVIDIA驱动≥535、CUDA12.1+);2)NVIDIA驱动自动安装方法;3)Python3.10虚拟环境配置;4)vLLM官方预编译包一键安装;5)单机4卡启动Qwen3.6-27B模型的完整参数说明(含FP8量化、多进程并行等关键配置)。文末附分布式部署的Ray集群方案参考链接,适用于多机8卡场景。

添柴程序猿的专栏 174

【YOLOv13多模态融合改进】| CFT:跨模态融合Transformer | 利用Transformer的自注意力机制,解决跨模态融合中的长距离依赖和全局信息整合问题

本文记录的是利用 CFT 模块改进 YOLOv13 的多模态目标检测网络模型。的设计出发点在于解决传统多模态检测中跨模态特征融合不充分的问题,即当不同模态数据需协同检测时,基于CNN的方法因局部卷积的局限性,难以捕捉长距离依赖和全局模态间的互补信息,导致复杂光照、遮挡等场景下检测精度不足。本文利用模块,将多模态特征序列拼接后自动学习模态内与模态间的交互权重,在特征提取阶段整合全局上下文信息,增强对不同模态互补特征的利用能力,从而提升模型在多模态场景下的检测鲁棒性与准确性。Cross-Modality Fus

Limiiiing的博客 538

NodeJS - http 服务

NodeJS - http 服务 文章目录NodeJS - http 服务1、编写服务2、配置启动脚本3、在项目文件夹下启动 `npm start`4、使用 nodemon 自动重启4.1 安装配置 nodemon4.2 修改 启动命令4.3、配置 `nodemon.json`4.4 Debug 模式 1、编写服务 const http = require('http'); const se...

小田的笔记簿 547

73、结合无人机进行rk3588oak-lite跟踪目标物体进行识别、跟踪

搭建仿真转换模型环境,主要python版本和我下载的rknn2的版本。截取shape节点,输出模型。so库也要对应转模型的whl。其中安装的whl版本。

sxj731533730 1623

node制作http服务器,NodeJS 搭建 HTTP 服务器

前言在 NodeJS 中用来创建服务的模块是 http 核心模块,本篇就来介绍关于使用 http 模块搭建 HTTP 服务器和客户端的方法,以及模块的基本 API。HTTP 服务器1、创建 HTTP 服务器在 NodeJS 中,创建 HTTP 服务器可以与 net 模块创建 TCP 服务器对比,创建服务器有也两种方式。方式 1:const http = require("http");const ...

weixin_32795427的博客 628

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

NodeJS 搭建 HTTP 服务器

原文出自:https://www.pandashen.com 前言 在 NodeJS 中用来创建服务的模块是 http 核心模块,本篇就来介绍关于使用 http 模块搭建 HTTP 服务器和客户端的方法,以及模块的基本 API。 HTTP 服务器 1、创建 HTTP 服务器 在 NodeJS 中,创建 HTTP 服务器可以与 net 模块创建 TCP 服务器对比,创建服务器有也两种方式。 ...

github_38140984的博客 1326

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

node制作http服务器,NodeJS搭建HTTP服务器的实现步骤

前言在 NodeJS 中用来创建服务的模块是 http 核心模块,本篇就来介绍关于使用 http 模块搭建 HTTP 服务器和客户端的方法,以及模块的基本 API。HTTP 服务器1、创建 HTTP 服务器在 NodeJS 中,创建 HTTP 服务器可以与 net 模块创建 TCP 服务器对比,创建服务器有也两种方式。方式 1:const http = require("http");const ...

weixin_28872105的博客 557

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

NodeJS与多核HTTP服务器

NodeJS与多核HTTP服务器 NodeJS与多核HTTP服务器 | 移动开发博客NodeJS与多核HTTP服务器2010/09/05 by lishen 3 Comments »译自:http://developer.yahoo.net/blog/archive...

119

nodejs实现http服务器

  软件测试工作过程中,我们很多时候都会需要一个模拟的服务器,用于对指定的请求作出我们所希望的响应。目前,有很多脚本语言都可以很方便的实现这个目的,而我由于工作需要,研究了下如何通过nodejs实现一个模拟的http服务器,对来自客户端的请求作出各种判断,处理,统计等操作。下面对我的实现结果做一个记录:   首先,讲一下我的大体思路。我将模拟http服务器代码分成了三个部分:启动服务、路由选择和...

Route to forward 1490

http-server 基于nodejs的http本地服务器

http-server 是一个简单的零配置命令行HTTP服务器, 基于 nodeJs. 如果你不想重复的写 nodeJs 的 web-server.js, 则可以使用这个. http-server所用场景: 作为前端的同学来说,想要运行一段代码,但又没有必要使用tomcat或是Apache http server放在服务器上运行,这个时候,一个简单的轻量的http-server就能搞...

muzidigbig的博客 1万+

http 默认超时时间_NodeJS创建HTTP、HTTPS服务器与客户端

来源 |https://blog.youkuaiyun.com/ligang2585116/article/details/72827781超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。其属于下图七层网路协议的“应用层”。H...

weixin_39960793的博客 1137

NodeJS 之 HTTP 模块(实现一个基本的 HTTP 服务器)

HTTP 模块是 NodeJS 中核心的内置模块,你可以通过该模块搭建 HTTP 或 HTTPS 服务器,而无需像 PHP 等服务器端语言需要其他软件(Aphche、Nginx、IIS等)提供服务器功能。使用 server.listen() 或 server.listen(0) 在目标端口被占用的情况下,使用由 NodeJS 提供的随机端口。如果随机端口仍被占用,则将继续触发错误代码为 **EADDRINUSE** 的错误,并再次使用 NodeJS 提供的随机端口,直

两个月亮 2004

nodeJS初学问题之退出http服务器

一、问题 用NodeJS做一个最简单的服务器(PS:最经典的案例。。),所有事情做完了,竟不知怎么退出服务器。。 二、经过 先把案例(PS:nodeJS安装之后才可以实现本案例)贴出: // 案例保存在my-web-server.js中 var http = require('http'); var serv = http.createServer(function (req, re...

yan263364的博客 5166

C#一维数组参数传递机制与性能优化

数组作为编程中的基础数据结构,在内存中以连续块形式存储,提供O(1)时间复杂度的元素访问能力。在C#中,数组属于引用类型,其参数传递机制直接影响程序性能和内存使用。通过引用传递可以避免大数组的复制开销,而使用ref/out关键字能实现更精细的控制。现代C#引入的Span<T>和Memory<T>进一步优化了数组操作,特别适合高性能场景。在图像处理、算法实现等实际应用中,合理选择数组传递方式能显著提升执行效率。理解C#数组参数传递原理,掌握ReadOnlySpan、ArrayPool等技术,是编写高效C#代码

weixin_34221036的博客 381

NodeJS服务器:一行代码 = 一个的HTTP服务器

从这一篇开始,我们进入技术讲解的话题,逐步实现用NodeJS实现文件的传送共享服务。 前文我们讲过,NodeJS是最擅长做网络服务器的,今天我们就来用NodeJS做一个最简单的服务器。 先看一幅图: 如图中所画,当一个小孩子还很小的时候,如果有叔叔阿姨跟他打招呼,逗他玩,他几乎用相同的方式回应。 今天我们要做的HTTP服务器也一样,启动之后,不管是那个客户端连接上来,它都统一用Hi回应...

weixin_30338461的博客 127

多种HTTP服务器:Misultin, Mochiweb, Cowboy, NodeJS 及 Tornadoweb测评

我对HTTP服务器很感兴趣,我花了大量时间来试用它们,还喜欢从不同角度来比较它们。 今天我将用同一个用例对以下不同的HTTP服务器库进行测试: Misultin (Erlang) Mochiweb (Erlang) Cowboy (Erlang) NodeJS (V8) Tornadoweb (Python)                            之所以选择这些库是因为我现在对

Sunface撩技术 3396

使用NodeJs实现简单HTTP服务器,并返回简单的html页面

通过nodejs的异步回调实现简单的http服务器,并实现一下功能: 异步获取JSON文件(使用fs模块) 异步获取HTML模板(fs模块) 把JSON文件的内容装置到HTML模板里 返回html页面返回给用户 效果:

苦涩记忆 5933
下一篇: nodejs-模块
devil13th
博客等级 码龄19年 3粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值