6.1 路由router

摘要:
3、 各种路由情况:1.GET==˃app。get2.POST==˃应用程序。post3.使用参数:id==>app。通过req.param获取传递的id的值。id方法从数据库中获取相应的数据。例如:https://i.cnblogs.com/Files.aspxhttps://i.cnblogs.com/Configure.aspxhttps://i.cnblogs.com/Preferences.aspx例如,这些路线的常见部分是https://i.cnblogs.com/xxxxx.aspx,因此我们可以将xxxxx的这部分作为:idletxpress=require;letapp=express();应用程序。使用;//带参数:id//https://i.cnblogs.com/Preferences.aspx///:id.aspxapp.get ; 应用程序。听从这里,我们可以看到,通过网站的URL,我们无法知道网站是用什么语言制作的。☆ 伪静态:如果不是真正的静态,则称为伪静态。

路由
将信息由源地址传递到目的地的一种角色.

6.1 路由router第1张

一、路由简单应用举个例子:

let express=require('express');
let app=express();

app.use(express.static('public'));

// GET  /home 显示 网站首页
app.get('/home',function(req,res){
  res.setHeader('content-type','text/html;charset=utf-8');
  res.end('网站首页');
});

// GET  /admin 显示 后台首页
app.get('/admin',function(req,res){
  res.setHeader('content-type','text/html;charset=utf-8');
  res.end('后台首页');
});

// GET  /login  显示 登陆页面
app.get('/login',function(req,res){
  res.setHeader('content-type','text/html;charset=utf-8');
  res.end('登陆页面');
});

// POST /login 登陆操作
app.post('/login',function(req,res){
  res.setHeader('content-type','text/html;charset=utf-8');
  res.end('登陆操作');
});

app.listen(80);

6.1 路由router第2张     6.1 路由router第3张     6.1 路由router第4张

POST 请求有点麻烦,在浏览器地址栏发送请求的都是GET方式,要用POST方法我们得用form表单,不过这只是个小栗子,我们可以借助工具实现POST方式 :POSTMAN,如下:

返回结果:'登陆操作'

6.1 路由router第5张

 二、当浏览器发送HTTP请求时,服务器匹配路由规则:【先找静态资源,不成再找路由匹配,再不成404】

请求到达服务器之后会检测静态资源是否存在,如果存在 则将目标文件中的内容返回给客户端;

如果不存在 ,检测路由部分能否匹配上.

如果既没有静态资源匹配, 也没有路由规则匹配, 最后返回 404

 

6.1 路由router第6张

栗子1:

在 6.express 文章中的事栗子,如果当浏览器的请求是htttp://localhost时,服务器返回结果不会是‘七夕敲代码’,而是静态资源中的index.html(index.html是网站默认首页)。

6.1 路由router第7张6.1 路由router第8张
let express=require('express');
let app=express();

app.use(express.static('public'));

app.get('/',function(req,res){
  res.setHeader('content-type','text/html;charset=utf-8');
  res.end('七夕敲代码');
});

app.listen(80);

app.js
app.js

栗子2:

let express=require('express');
let app=express();

app.use(express.static('public'));

// get /index.html 
app.post('/index.html',function(req,res){
  res.setHeader('content-type','text/html;charset=utf-8');
  res.end('主页面666');
});

app.listen(80);

 当浏览器的请求是htttp://localhost/index.html 时,服务器返回结果不会是‘主页面666’,而是静态资源中的index.html。

 

 三、各种路由情况:

1. GET    ==> app.get('/', function(req, res){})

2. POST ==> app.post('/', function(req, res){})


3. 带参数 :id ==> app.get('/:id.html')   匹配到斜杠后面的值,可以通过方法 req.params.id 获取传递的id的值,从而可以向数据库获取对应数据

举个栗子:

https://i.cnblogs.com/Files.aspx     https://i.cnblogs.com/Configure.aspx     https://i.cnblogs.com/Preferences.aspx

如以上这些路由,共同部分都是https://i.cnblogs.com/xxxxx.aspx,所以我们可以把xxxxx的这部分作为:id

let express=require('express');
let app=express();

app.use(express.static('public'));

// 带参数 :id 
// https://i.cnblogs.com/Preferences.aspx
// /:id.aspx
app.get('/:id.aspx',function(req,res){
//获取请求的参数 let num
=req.params.id; res.setHeader('content-type','text/html;charset=utf-8'); res.end('文章操作页面,请求参数: '+num); }); app.listen(80);

6.1 路由router第9张   6.1 路由router第10张   6.1 路由router第11张

从这里,我们可以看出:不能通过网站的url来得知这个网站是用什么语言做的.

☆ 伪静态:不是真正的静态称之为伪静态。伪静态的作用方便 SEO。

 如上边栗子,服务器返回的并不是一个页面,而只是一连串数据,所以我们可以把路由做成xxx.html,当搜索关键字时能使我们得页面排名更靠前,方便百度引擎搜索,因为百度爬虫爬取各网站内容更喜欢静态内容即HTML内容,因为抓取速度更快,不需要花费多少时间。

 因为SEO对静态页面更加容易搜索到,所以对于不是页面的数据我们可以做成伪静态页面,没有纯静态页面,因为没有Files.html这个文件存在,我们是用技术手段实现伪静态页面。

4. 正则路由 ===> app.get(/^/d+.html$/, function(req, res){})

let express=require('express');
let app=express();

app.use(express.static('public'));

// 正则路由  
// /12345.html
app.get(/^/d+.html$/,function(req,res){
  res.setHeader('content-type','text/html;charset=utf-8');
  res.end('RegEXp');
});

app.listen(80);


5. 路由文件拆分

// app.js
app.use('/', require('./routes/router.js'))


// router.js
var express = require('express');
var router = express.Router();


router.get('/', function(req, res) {
  res.send('首页');
});

module.exports = router;

 实例代码

 

四、套用静态资源时所用的:路由路径和相对路径

6.1 路由router第12张

1.路由路径:

因为在app.js中已经设置好静态资源存放位置:

  app.set('view engine','ejs');
  app.set('views', 'views');

所以不管你的浏览器URL的路由如何写都不影响静态资源的引用,都只会去views中找。

2.相对路径: html 页面中所有的相对路径 (link=>href、script=>src、img=>src、iframe=>src、... ), 参照 浏览器URL 中最后一个 /之后的内容. 有无后缀名都一样.

  [即是把最后的内容替换成相对路径]

(1)栗子1:http://localhost/admin  ===> http://localhost/css/login.css

6.1 路由router第13张

 6.1 路由router第14张

 6.1 路由router第15张

(2)栗子2:http://localhost/admin/setting  ===> http://localhost/admin/css/login.css

6.1 路由router第16张

 6.1 路由router第17张

6.1 路由router第18张

免责声明:文章转载自《6.1 路由router》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用AJAX技术发送异步请求,HTTP服务端推送 --Graham 扫描法找凸包(convexHull)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

为什么每个浏览器User-Agent都是Mozilla?真相原来是这样!

转载自简明现代魔法http://www.nowamagic.net/librarys/veda/detail/2576 故事还得从头说起,最初的主角叫NCSA Mosaic,简称Mosaic(马赛克),是1992年末位于伊利诺伊大学厄巴纳-香槟分校的国家超级计算机应用中心(National Center for Supercomputing Applica...

python2.7+RobotFramework的UI自动化环境搭建

robotFramework是一种比较常见的自动化测试框架,此篇记录环境搭建 目录 1、软件准备 2、执行安装 1、软件准备 python-2.7.15.amd64.msi 链接:https://pan.baidu.com/s/15yS3-wTq7PDzI0rFhkDNLA 密码:hg2n wxPython2.8-win64-unicode-2.8.12....

【摄影】湖州安吉梅花沟

安吉梅花沟的地址是:浙江省湖洲市安吉县孝丰镇黄坞里村 梅花盛开季节为每年的2月底到3月初,前后大约十天左右的时间。 以白为底,晕之以红,这早春三月的少女,实乃动人。 一千三百多亩的梅花,布满桐坑村黄坞岭的小山坡上,梅花盛开时非常壮观。 图片发自简书App 红梅奔放高贵,白梅沉静端庄。以白为底,晕之以红,这早春三月的少女,...

利用xcode生成的app生成可以在iphone和itouch上运行的ipa安装包

在编译好的真机版目录下的.app文件,至于生成真机可以运行的app的方法,有两种方式,一种是交99美元获得一个证书,另外一种是破解的方式,在此不再详述,本文假设你已经生成了真机上可以运行的app包了(app包实际上是一个文件夹) 假设此安装包的名称是 hello.app,点击右键,选择 显示包内容,这样就可以打开这个hello.app文件夹了,在此文件夹中...

开网页自动进入路由器设置界面的解决办法(腾达路由器)

腾达路由器设置完毕后,开网页自动进入路由器设置界面,并且WAN口状态显示连接中 问题1:显示“连接中”怎么办? 原因1:路由器WAN口的上网方式选择错误。 解决方法:进到路由器设置页面,点击“高级设置”-“WAN口设置”选择正确的上网方式. 原因2:宽带的账号和密码输错了或者没有区分大小写 解决方法:输入正确的宽带帐号和密码,注意区分帐号密码大小写。 原...

代理ARP的总结

ARP/代理ARP的总结1.ARP首先讲到ARP,ARP是地址解析协议,它的作用是在以太网环境下,通过3层的IP地址来找寻2层的MAC地址,得到一张ARP缓存表。转发数据的时候根据ARP缓存表来进行传输。下图详细说明数据传输时ARP是如何一步步操作的。在配置IP地址后,不做任何ping操作,ARP缓存表是这样的: 当PC去ping R1的时候,你会发现第...