当前位置: 首页 > news >正文

[node] Node.js的路由

[node] Node.js的路由

  • 路由 & 路由解析
  • 路由信息的整合
    • URL信息
    • 路由处理逻辑
    • 路由逻辑与URL信息的整合
    • 路由的使用

路由 & 路由解析

路由需要提供请求的 URL 和其他需要的 GET/POST 参数,随后路由需要根据这些数据来执行相应的代码。

因此,根据 HTTP 请求,从中提取出请求的 URL 以及 GET/POST 参数。这一功能应当属于路由还是服务器(亦或一个单独模块的功能)确实值得探讨,但这里暂定其为HTTP服务器的功能。

目前所有数据都会包含在 request 对象中,该对象作为 onRequest() 回调函数的第一个参数传递。但是为了解析这些数据,我们需要额外的 Node.JS 模块,它们分别是 url 和 querystring 模块。

var url = require("url");
var querystring = require("querystring");var data = "http://localhost:8888/start?foo=bar&hello=world";const query = url.parse(data).query;
console.log(query); // foo=bar&hello=world
console.log(url.parse(data).pathname); // /start
console.log(querystring.parse(query)["foo"]); // bar
console.log(querystring.parse(query)["hello"]); // world

路由信息的整合

URL信息

server.js ,用于获取浏览器URL地址,该信息是路由需要使用到的信息:

var http = require("http");
var url = require("url");function start() {function onRequest(request, response) {var pathname = url.parse(request.url).pathname;console.log("Request for " + pathname + " received.");response.writeHead(200, {"Content-Type": "text/plain"});response.write("Hello World");response.end();}http.createServer(onRequest).listen(8888);console.log("Server has started.");
}exports.start = start;

以上代码达成通过 URL 路径来区别不同请求–使得路由之后(还未完成)可以将请求(以 URL 路径为基准)映射到处理程序上。

路由处理逻辑

router.js 简单的路由处理逻辑模块:

function route(pathname) {console.log("About to route a request for " + pathname);
}
exports.route = route;

以上代码没有具体的逻辑处理,你之后可以根据需要添加,此时只是封装了路由的处理方法。

路由逻辑与URL信息的整合

然后,先来看看如何把路由和服务器整合起来。

服务器知道路由的存在并应加以有效利用。可以通过硬编码的方式将这一逻辑处理绑定到服务器上,但是对于推荐模块开发的情况下,使用依赖注入的方式较松散地添加路由模块会使得耦合性更低,也方便以后的代码变更。

所以对于server.js 文件做出如下更改,将路由函数作为参数传递过去:

var http = require("http");
var url = require("url");function start() {function onRequest(request, response) {var pathname = url.parse(request.url).pathname;console.log("Request for " + pathname + " received.");route(pathname);response.writeHead(200, {"Content-Type": "text/plain"});response.write("Hello World");response.end();}http.createServer(onRequest).listen(8888);console.log("Server has started.");
}exports.start = start;

路由的使用

index.js 文件,服务器使用路由的方式–路由函数注入到服务器中:

var server = require("./server");
var router = require("./router");server.start(router.route);

以上整体是对路由信息的获取与如何添加路由处理逻辑的一个简单介绍,是一种方法上的介绍

http://www.lryc.cn/news/266377.html

相关文章:

  • 网络编程第三天作业
  • AIGC:大语言模型LLM的幻觉问题
  • 【C语言刷题每日一题#牛客网BC68】——X形图案
  • 阻断血缘关系以及checkpoint文件清理
  • PHP代码审计之反序列化攻击链CVE-2019-6340漏洞研究
  • PyTorch之线性回归
  • SSTI模板注入基础(Flask+Jinja2)
  • React网页转换为pdf并下载|使用jspdf html2canvas
  • EASYEXCEL导出表格(有标题、单元格合并)
  • pytest 断言异常
  • 听GPT 讲Rust源代码--src/tools(22)
  • OD Linux发行版本
  • 华为端口隔离简单使用方法同vlan下控制个别电脑不给互通
  • DaVinci各版本安装指南
  • 【黑马甄选离线数仓day10_会员主题域开发_DWS和ADS层】
  • OD 完美走位
  • SpringSecurity6 | 失败后的跳转
  • MySQL数据库增删改查
  • Altium Designer(AD24)新工程复用设计文件图文教程及视频演示
  • Python遥感影像深度学习指南(1)-使用卷积神经网络(CNN、U-Net)和 FastAI进行简单云层检测
  • Hive-DML详解(超详细)
  • PHP实现可示化代码
  • useState语法讲解
  • 堆与二叉树(下)
  • 讲诉JVM
  • 8、SpringCloud高频面试题-版本1
  • PHP案例代码:PHP如何提供下载功能?
  • The Cherno C++笔记 03
  • 蓝牙物联网与嵌入式开发如何结合?
  • 前端面试——JavaScript面经(持续更新)