node.js第十四课(路由控制)

掌握后端开发:Node.js与JavaScript的实践指南 本文还有配套的精品资源,点击获取 简介:后端开发是互联网应用程序的核心,负责服务器端逻辑、数据管理及用户验证。JavaScript,尽管常用于前端,也能在Node.js环境中实现后端功能。Node.js提供了一个异步、事件驱动的I/O模型,适合构建高性能应用。本项目“Back-End-main”演示了一个典型后端应用的结构,包括服务器文件、数据库连接、模型、控制器、中间件、... 阅读详情

  一、工作原理
            当通过浏览器访问app.js建立的服务器时,会看到一个简单的页面,实际上它已经完成了许多透明的工作,
            当访问 http://localhost:3000,浏览器会向服务器发送请求,包括请求的方法、路径、HTTP协议版本和请求头信息。app会解析请求的路径,调用相应的逻辑,app.js中有app.get("/",routes.index)通过res.render("index",{title:"pcat"})调用视图模版index,传递title变量,最终视图生成HTML页面,返回给浏览器。
            浏览器接收到内容后,通过分析需要获取/stylesheets/style.css,因此会再次向服务器发起请求,app.js并没有一个路由规则指派到/stylessheets/style.css,但app通过app.use(express.static(__dirname+'/public'))配置了静态文件服务器,因此会定向到app.js所在目录下的/public/stylessheets/style.css拿去这个文件。
            
             

            这是一个典型的MVC架构,浏览器发送请求,由路由控制接受,根据不同的路径定向到不同的服务器,控制器处理用户具体的请求,可能会访问数据库中的对象,即模型部分,生成视图的HTML,最后再由控制器返回给浏览器,完成一次请求。
二、创建路由规则
            当我们在浏览器访问 http://localhost:3000/octopus的时候,服务器响应头返回HTTP 404错误
            这是因为/octopus是一个不存在的路由规则,而且它也不是一个public目录下的文件,所以响应404
            假设我们创建一个/octopus的路由规则。
            app.get('/octopus',function(req,res){
                res.send('这是 octopus 的路径');
            });      //若我们定义“/octopus的路由规则”两次,则按照先定义的路由规则走。
            app.get("/octopus",routes.octopus);    //在index.js中增加函数octopus
            exports.octopus=function(req,res){
                res.send('The time is '+new Date().toString());
            }
            服务器在开始监听之前,设置好了所有的路由规则,当请求到达时直接分配到相应函数。app.get是路由规则创建函数,
            参数一:请求的路径
            参数二:是一个回调函数,该路由规则被触发时调用回调函数,并传递req(请求信息)和res(响应信息)两个参数。
三、路径匹配
        上面讲到了为固定的路径设置路由规则,Express还提供更高级的路径匹配模式。
        1.app.get('/user/:username',function(req,res){
            res.send("user :"+req.params.username);
        });
            路径规则/user/:username会被自动编译成正则表达式,类似于\/user\/([^\/]+)\/?这样的形式,路径参数可以相应函数中通过req.params的属性访问
        2.路径规则同样支持javascript正则表达式,例如:app.get(\/user\/([^\/]+)\/?,callback),这样的好处在于可以定义更加复杂的路径规则,不同支持是配置的参数是匿名的, 因此需要通过req.params[0]这样的形式访问。
四、REST风格的路由规则
        Express支持REST风格的请求方式,REST意思是表征状态转移,它是一种基于HTTP协议的网络应用的接口风格,充分利用HTTP的方法实现了统一风格的接口和服务,HTTP协议定义了一下8个标准方法:
        GET:请求获取指定的资源       获取
        POST:向指定资源提交数据       新增
        DELETE:请求服务器删除指定资源     删除
        PUT:请求服务器存储一个资源               更新      
        HEAD:请求指定资源的响应头
        TRACE:回显服务器数到的请求,主要用户测试或诊断
        CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
        OPTIONS:返回服务器支持的HTTP请求方法
        
   所谓安全指的是连续访问多次所获得的结果不受访问者的影响。而 幂等指的是重复请求多次与一次请求的效果是一样的,比如获取、更新和删除操作是幂等,这与新增不同。
    
        Express对每种HTTP请求方法都设计了不同的路由绑定函数,例如前面全部是app.get,标识该路径绑定了GET请求,向这个路径发起其他方式的请求不会被响应。
        GET     app.get(path,callback)
        POST     app.post(path,callback)
        PUT     app.put(path,callback)
        DELETE     app.delete(path,callback)
        ...
        ...
         所有方法   app.all(path,callback,next)
        怎么使用?
            绑定一个POST请求,可以使用app.post(path,callback)的方法设置路由规则。
            app.all函数,它支持把所有的请求方法都绑定到同一个相应函数,是一个非常灵活的函数。
五、控制权转移
        Express支持同一路径绑定多个相应函数
        app.all('/test/:user',function(req,res,next){
            
        //我们在这里验证用户名是否存在。
        //如果存在直接send或者调用next(new Error('用户已经存在'));
        //如果不存在我们调用next()把控制权交给下一个路由规则
            console.log("all methods is call");
            next();
            res.send('哈哈');
            
        });
          app.get('/test/:user',function(req,res){
            res.send("user:"+req.pararms.user)
        })
        但是我们访问都会只返回一次。
            Exress提供了路由控制权转移的方法,即next()函数,通过调用则将控制权交给后面的规则。
        
           


Node.js中路由控制与UDP通信的实现 本文介绍了Node.js中如何通过req.url属性进行路由控制,以及如何利用UDP协议进行快速的数据传输。章节详细说明了创建UDP服务器和客户端的步骤,并通过实例代码展示如何绑定端口、监听数据以及发送数据。此外,还涉及到Node.js与MySQL及MongoDB数据库的连接与操作,特别指出使用mongoose模块来连接和操作MongoDB的方法和优势。 阅读详情

相关推荐

Node.js Express路由模块化实践指南

路由可以理解为Web服务器对不同URL路径的响应逻辑。在Express中,一个基本的路由由一个HTTP请求方法(如GET、POST等)、一个URL路径和一个处理该请求的回调函数组成。// 基本路由示例');});});在Web开发中,路由是指将不同的URL映射到服务器上的特定处理程序。路由模块化是将应用的路由逻辑分散到独立的模块中,而不是在单一的文件或函数中处理所有路由。这种做法让路由结构更加清晰,易于管理和扩展。// 一个简单的独立路由模块示例});

weixin_29496633的博客 1020

Node.js路由简介

路由是Web应用程序中的一个核心概念,它允许我们将URL映射到特定的处理程序或函数。这样,当用户访问某个URL时,服务器就可以执行相应的操作并返回相应的内容。例如,当用户访问时,服务器可能会显示一个关于我们的页面。

KAIYUANHEMIAO的博客 589

构建Node.js应用:Mongoose模型与路由

本文详细探讨了如何在Node.js应用中使用Mongoose构建模型,并创建相应的路由和控制器。通过实例代码演示了如何定义模型、创建CRUD操作,并利用Express中间件设置路由以响应不同的HTTP请求。文章还介绍了模板引擎在Web开发中的作用,以及如何使用模板引擎EJS创建动态HTML内容。

weixin_30021053的博客 798

JS项目配置路由

index.js 文件: src/router/index.js, 创建路由模块,用于导入,将一下代码段写入index.js。8.1在src/components创建tabbar目录,在tabbar目录下创建TabBar.vue文件,文件: src/router/routes.js,真正的路由配置,放在这个文件中,该文件需要。src/router/routes.js , 在 routes.js 文件中配置路由,在src目录下创建router目录(将所有与路由相关的文件都会放在这个目录下)

qq_45728643的博客 1287

nodejs-traceroute:围绕tracert和traceroute流程的Node.js包装器

nodejs跟踪路由 围绕Tracert和TraceRoute流程的Node.js包装器 安装 npm install --save nodejs-traceroute 强制使用IPv4或IPv6 默认情况下,给出的域名将自动解析。 通过将ipv4或ipv6传递给构造函数来显式强制进行IPv4或IPv6跟踪。 使用范例 const Traceroute = require ( 'nodejs-traceroute' ) ; try { const tracer = new Traceroute ( ) ; tracer . on ( 'pid' , ( pi

史上最全的Logisim运算器实验教程(基于华中科技大学计算机组成原理实验)

本博客是实现了Logisim的运算器设计,有具体的运算器设计的思路和运算器设计的电路,适合一步一步的按照思路做。

qq_62325622的博客 4万+

node+express的路由跳转(get/post)

node+express的路由跳转(get/post) 项目目录 app.js var router = require('./router') var express = require('express'); var app = express() // 放开静态资源 app.use('/node_modules', express.static('./node_modules')) app.use('/public', express.static('./public')) app.engi

qq_42552455的博客 1968

COLMAP在Ubuntu下的编译陷阱与实战避坑指南——从环境配置到三维重建全流程

本文详细介绍了在Ubuntu系统下编译和配置COLMAP三维重建工具的全流程,包括环境准备、依赖库安装、CUDA加速配置以及常见编译问题的解决方案。通过实战案例演示了从图像特征提取到稠密重建的完整步骤,并提供了性能优化和问题排查的实用技巧,帮助用户高效完成三维重建任务。

weixin_29003437的博客 1048

Node.js之路由

中间件(Middleware),特指业务流程的中间处理环节。// 常量mv所指向的,就是一个中间件函数console.log('这是一个简单的中间件函数');// 注意:在当前中间件的业务处理完毕后,必须调用next()函数// 表示把流转关系交给下一个中间件或路由next();// 全局生效的中间件console.log('这是一个简单的中间件函数');next();});// 可以在路由中,通过如下两种等价的方式,使用多个局部中间件:自己手动模拟。

QSY_com的博客 1348

TCNOpen实现TRDP通信协议(源码编译运行测试)

概述 本文介绍了通过TCNOpen开源源码实现TRDP通信,包括源码下载,开发环境搭建,编译运行,测试。 Linux环境下编译运行TRDP (一) 下载CANOpen源码。 下载地址:https://sourceforge.net/p/tcnopen/trdp/HEAD/tree/ (二) 源码编译 下载源码解压过后,在根目录文件readme-makefile.txt有介绍源码的配置和编译方法。 在trdp/config目录下可以看到包含在linux环境下的编译配置文件LINUX_config;执行”m

fengweibo112的博客 9637

中科蓝讯Downloader配置实战:从软硬开关机到ANC降噪的完整指南

本文提供了中科蓝讯Downloader工具的详细配置实战指南。内容涵盖从基础的软硬开关机选择与配置,到核心的EQ音效调试、触摸按键与入耳检测优化,以及高阶的ANC降噪与电源管理设置。旨在帮助开发者快速掌握关键配置项,高效完成蓝牙耳机产品的功能调试与优化。

s4t5u6v7的博客 509

node.js路由

1、node.js路由 2、内置模块实现路由 3、http模块

chengcheng9876的博客 1893

大语言模型(LLM)在组合优化中的新突破:LLM-LNS与FunSearch性能对比

本文深入探讨了大语言模型(LLM)在组合优化中的创新应用,重点对比了LLM-LNS与FunSearch两种方法的性能差异。研究表明,LLM-LNS在物流路径规划、资源调度等场景中展现出显著优势,其双层自演化架构能有效平衡探索与利用,相比传统方法提升效率约43%。文章还提供了实践选择指南,帮助开发者根据具体需求选用合适的技术方案。

weixin_42526415的博客 408

前端之node.js的express和路由

Express框架介绍Express是Node.js中一个流行且强大的Web应用框架,它简化了HTTP服务器的开发过程,提供了丰富的中间件机制、路由控制等功能。Express基于Node.js的http模块构建,允许开发者快速创建可扩展的Web应用程序和API服务。安装Express的例子要在Node.js项目中安装Express,请按照以下步骤操作:首先确保已经安装了Node.js环境,并在命令行工具(如终端或命令提示符)中进入你的项目目录。

m0_74242675的博客 1445

【ARM CoreLink 系列 4 -- NIC-400 控制器详细介绍】

正常情况下,一个NIC的实现,可以包含一百多个master和几十个slave,每个master和每个slave都会有一些寄存器,这些寄存器可以被 programming,实际实践中就会对 AMIB 或者 ASIB 或者 IB,当它需要具有 programming的时候,给它指定一个node number。为什么指定Node Number呢?首先,从CPU的角度,它需要有一个1M对齐的地址空间,在这1M地址空间上,对每个ASIB或者AMIB这样的接口给它一个node number以后,

CodingCos的博客 5242

振动分析-46-设备振动监测和故障诊断能力提升需要理解和掌握的知识体系

提升振动分析能力对于确保机械设备的高效运行和预防故障至关重要。

qq_20466211的博客 665

WEB开发: Node.js路由之由浅入深- 即拿即用完整版

前面我们一起学习了Node.js路由之由浅入深,基本了解并熟悉了Node.js的路由实现。现在我们来一个综合完整版,让这个路由模块即拿即用,也就是下载运行就可用,并可以根据说明自行增加路由,无需去繁琐地修改路由配置,完全自动实现,重启webserver 就生效。本模块启动后可以通过 http://127.0.0.1:3000访问到静态页面,同时也是api根地址。

minstbe的博客 1115

四足机器人关节电机控制器实现(附C++代码)

本文先对做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 466

Node.js 路由

总之,在 Node.js 中,路由是用于处理 HTTP 请求的系统,可以控制应用程序的路径,决定应该执行哪些代码,并且返回相应的结果。之后,就可以在应用程序上使用路由方法,如 app.get()、app.post()、app.put() 和 app.delete(),处理不同的 HTTP 请求方法。同样,也可以使用 app.post() 方法处理 POST 请求,使用 app.put() 方法处理 PUT 请求,以及使用 app.delete() 方法处理 DELETE 请求。在路由中,还可以使用中间件。

笔记 1952

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

假人有限元模型

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

WEB开发: Node.js路由之由浅入深(二)自动路由 - 全栈工程师入门

在上一篇文章《》中,我们一起学习了如何用最简单的方式,来实现服务器端的路由,理解了NODE.js 路由的底层原理。然后我们发现,那种实现路由的方式,如果遇到比较复杂的应用,比如有很多种不同路径的请求,就很难应对了。今天我们继续来深入学习一下,如何使用动态管理、模块化的方式,来统一实现路由,让你开发的api更加系统化、规范化。在使用开发 web 服务时,如果每个路由都要单独编写方法并保存为文件,然后再导入,实现逻辑比相当繁琐。为了简化路由管理,我们可以采用动态加载和配置化的方式来自动化路由注册和处理。

minstbe的博客 1132

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Vue路由及Node.js环境搭建

Vue路由是指使用Vue Router插件来管理前端应用程序的导航和页面路由的过 程。它允许你在单页面应用程序(SPA)中定义不同的路由路径,并将每个路径映射到相应的组件。通过使用Vue路由,你可以根据URL的变化加载不同的组件或视图,并且可以通过导航链接(例如点击导航菜单或按钮)在不同的页面之间进行切换。Vue路由的核心目标是提供良好的用户体验,使用户能够在应用程序中自由导航和浏览内容,而不需要每次都重新加载整个页面。

m0_74915426的博客 1938

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

WEB开发: Node.js路由之由浅入深(三)自动配置路由 - 全栈工程师入门

前面我们一起学习了Node.js路由的两个进阶,(1)(2)在第二进阶中,我们已经通过将路由结构模块化,实现了比较方便的而路由方法。

minstbe的博客 1290

Node.js之Express-路由系统

路由(Routing)是指应用程序的端点(endpoints)如何响应客户端对特定路径的请求,以及特定的HTTP方法(GET、POST、PUT、DELETE等)。Express的路由系统是一个强大而灵活的功能,允许开发者定义URL路径和处理函数之间的映射关系。

weixin_40892705的博客 695

Node.js 路由映射和简单例子实现

路由就是根据提供的数据来执行相应的代码。 这也设计到了MVC设计模式,其主要思想是将业务逻辑按职责分离,主要分为以下几种。 (1)控制器(Controller),一组行为的集合。 (2)模型(Model),数据相关的操作和封装。 (3)视图(View),视图的渲染。 这是目前最经典的分层模式(如下图),大致而言,它的工作模式如下说明。 (1)路由分析,根据URL寻找到对应的控制器和行为

Cyan1614的博客 1872

【附源码】Node.js毕业设计框架的拼团慕课(Express)

在后端,通过Express设置路由和中间件,与MySQL 5.7数据库进行交互,确保数据的存储和检索。总之,拼团慕课系统的开发将为在线教育领域带来新的发展机遇,推动教育信息化的进步。为了解决这些问题,本项目提出了一个基于框架的拼团慕课系统,旨在通过引入拼团模式,增强学习者之间的互动与合作,提高学习效果。综上所述,本毕业设计题目“框架的拼团慕课系统开发”具有明确的选题背景和意义,旨在通过引入拼团模式,解决传统慕课平台的局限性,提高学习效果,为教育者和学习者提供更好的在线教学与学习体验。

ssm毕设程序设计 796
上一篇: 去除express.js 3.5中报connect.multipart() will be removed in connect 3.0的警告
下一篇: node.js第十五课(模板引擎)
栖息
博客等级 码龄15年 64粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值