Express、路由(Router) 、request、response

一、简介

  • Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。
  • Express 简单来说就是运行在Node 平台中的服务器模块,通过Express可以很容易的通过HTTP协议向用户返回静态或动态页面。
  • Express的特点: 精简、灵活、适合各种WEB应用程序

二、安装express

npm i express --save  //安装并添加到项目依赖中

三、使用express

//引入express
var express = require("express");

//创建一个应用对象
//application 代表整个web应用
//一个应用中只能有一个app对象
var app = express();

//配置静态资源 可以被外部访问
app.use(express.static("public"));

//启动服务器并监听3000端口 端口自己设置
app.listen(3000 , function () {
	console.log("服务器已经成功启动~~~");
});

当在浏览器中输入http://localhost:3000 就可以访问服务器了,

四、路由(route)

  • 路由是将请求(由 URL 和 HTTP 方法指定)路由到处理它们的代码去的一种机制
  • 通过路由可以将浏览器发送的请求地址和Node中的函数进行关联(映射),通过函数可以来获取用户发送的请求,或向用户返回响应。简单来说,就是当用户访问指定地址时,可以调用函数来处理用户的请求
  • 路由是Express的根本,通过路由才可以在用户和服务器之间建立联系。
  • express中请求由谁处理,由路由决定

五、实现路由

可以将路由定义为两个部分:

第一部分:HTTP请求的方法(get或post)

第二部分:是URL中指定的路径

Express中提供了一些列函数,可以让我们很方便的实现路由:

     app.<method>(path,callback) ;

    语法method指的是HTTP请求方法,比如:

    app.get() ;

       - 配置get路由,仅能处理get请求

    app.post()

      - 配置post路由,仅能处理post请求

app.all()
      - 配置all路由,可以处理所有的请求

    path:指要通过回调函数来处理的URL地址 (url客户端请求的地址/要映射的请求地址)

    callback:是应该处理该请求并把响应发回客户端的请求处理程序

配置好路由以后,当浏览器访问指定的地址时,将会自动调用回调函数,
   并且在调用回调函数时,每次都会传递进两个对象作为实参
      request
         - 请求,代表浏览器发送给服务器的请求报文
      response
         - 响应,代表的是服务器发送给浏览器的响应报文

六、路由的实例

app.get("/testReq", function (req , res) {

	/*
		req
			- 是用户发送给服务器的请求报文
			- 所有用户发送的信息,都可以通过req来获取

			- req.get(header)
				- 获取用户发送的请求头信息
			- req.headers
				- 获取用户所有的请求头
			- req.query
				- 获取get请求的请求参数(查询字符串)
				- query是一个对象,对象的属性名就是用户发送的参数的名字
						属性值就是参数的值(当一个参数有多个值时,会返回数组)
				- 通过query可以获取用户发送的请求参数
						req.query.参数名
	 */

	//console.log(req.method);
	//console.log(req.get("User-Agent"));
	//console.log(req.headers);
	console.log(req.query.username);


	//通过response来向浏览器发送一个响应
	//res.send()用来设置响应体,并发送响应报文
	res.send("我是testReq发送的响应~~~");
});

七、路由的运行流程

      当Express服务器接收到一个HTTP请求时,它会查找已经为适当的HTTP方法和路径定义的路由 ,如果找到一个,Request和Response对象会被创建,并被传递给路由的回调函数。

我们便可以通过Request对象读取请求,通过Response对象返回响应

八、request对象

Request对象是路由回调函数中的第一个参数,代表了用户发送给服务器的请求信息 ,

通过Request对象可以读取用户发送的请求包括URL地址中的查询字符串中的参数,和post请求的请求体中的参数。

Request的属性和方法:

属性/方法

描述

originalUrl

请求的原始地址

protocol

协议字符串

ip

请求的ip地址

path

请求的URL的路径部分

host 

请求的主机名

method 

请求的方法

query 

请求的查询字符串

get(header) 

返回header的值的方法

headers 

请求头的对象形式

九、Response

Response对象是路由回调函数中的第二个参数,代表了服务器发送给用户的响应信息

通过Response对象可以设置响应报文中的各个内容,包括响应头和响应体。

response对象的属性方法:

属性/方法

描述

getHeader(header)

获取响应头

set(header,value)

设置响应头

set(headerObj)

设置响应头

res.send([body])

设置响应体

res.status(code)

设置响应状态码

res.redirect([status,] path)

重定向

res.sendFile(path [, options] [, fn])

发送文件

res.download(path [, filename] [, fn])

提供文件下载

 send()
   - 设置响应体并发送响应报文

 res.sendFile(path [, options] [, fn])
   - 向客户端发送一个文件(路径必须是绝对路径)
      这个文件如果浏览器可以打开则打开,否则下载

 res.download(path [, filename] [, fn])
   - 向客户端端发送一个文件用于下载
      无论浏览器是否能打开文件,都下载

 res.redirect([status,] path)
   - 请求的重定向
      - 重定向,现象上看,在浏览器输入的是一个地址,但是显示的确实另一个

   - 原理:
      - 重定向就是服务器收到客户端的请求后,向客户端发送一个特殊的响应,
         这个响应告诉浏览器再去向另一个地址发送请求

          HTTP/1.1 302 Found
          Location: /form.html

      - 这个特殊的响应的响应状态码是302,当浏览器看到302这个状态码,
         就会自动向响应头Location指向的地址发送请求

设置响应体并发送响应报文 在一次请求中send()只能调用一次

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值