6.1 路由router

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

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

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);

          

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

返回结果:‘登陆操作‘

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

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

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

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

栗子1:

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

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);

      

从这里,我们可以看出:不能通过网站的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;

原文地址:https://www.cnblogs.com/xzsz/p/9494771.html

时间: 2024-10-08 22:18:53

6.1 路由router的相关文章

Android业务组件化之子模块SubModule的拆分以及它们之间的路由Router实现

前言: 前面分析了APP的现状以及业务组件化的一些探讨(Android业务组件化之现状分析与探讨),以及通信的桥梁Schema的使用(Android业务组件化之URL Schema使用),今天重点来聊下子模块SubModule的拆分以及它们之间的路由Router实现.本篇涉及的相关知识比较多,阅读本篇之间需要大致了解一下Java的注解(Java学习之注解Annotation实现原理).Java的动态代理机制(Java设计模式之代理模式(Proxy))等.业务组件化是一个循序渐进的过程,一开始很难

node_egg路由Router

路由(Router) 框架约定了app/router.js文件用于统一所有路由规则. Router 主要用来描述请求URL和具体承担执行动作的 Controller 的对应关系 定义路由(Router) // app/router.js 里面定义 URL 路由规则 module.exports = app => { const { router, controller } = app; router.get('/user/:id', controller.user.info); // 动态路由传

vue_路由Router

使用路由 Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌 安装 vue项目创建时选择使用路由,项目将自动在根实例中注册 router 选项, 该 router 实例会注入到根组件下的所有子组件中,且子组件能通过 this.$router 访问到 假设vue项目创建没有选择使用路由,手动将路由注册到根实例中 $ npm install vue-router --save 手动创建目录 src/router/index.js

angular 路由router的用法总结

1,html页面 <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, 

docker的cli的路由router

写过应用框架的都应该知道有个路由模块,来看看docker的http请求是怎么路由的 docker的server.go文件中,首先入口是New的时候 func New(cfg *Config) *Server {         //需要创建Server的实例,因为命令的具体执行都是Server对象的函数   srv := &Server{ cfg:   cfg, start: make(chan struct{}), } //这里就是创建Router的操作 r := createRouter(s

vue路由-router

VueRouter基础 vue路由的注册 导入 <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> # 可以是下载之后的 <script src="vue.min.js"></script> <script src="vue-router.js"></script> 定义一个匹配规则对

Vue的路由Router之导航钩子和元数据及匹配

一.文件结构 二.vue.js 打开此链接 https://cdn.bootcss.com/vue/2.6.10/vue.js 复制粘贴页面的所有内容 三.vue-router.js 打开此链接  https://cdn.bootcss.com/vue-router/3.0.6/vue-router.js 复制粘贴页面的所有内容 四.index.html 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4

Vue:路由router的一些用法

Vue-router的引入 分为两种方式: 1.通过npm 引入vue-router库 npm install vue-router 在模块中通过下面的方法使用 import Vue from 'vue' import VueRouter from 'vue-router' Vue.use(VueRouter) 2.直接通过script标签引入vue-router.js文件 如果是通过script标签引入,则直接使用即可. 下载地址 router的使用 var routes = [ { path

路由Router

基本使用 from booktest import views # 1. 创建Router对象 from rest_framework.routers import SimpleRouter router = SimpleRouter() # 2. 注册视图集 router.register('books', views.BookInfoViewSet, base_name='books') # 3. 打印生成的url配置项 for url in router.urls: print(url)