1.Express介绍

Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。

Express的特点:

  • 实现了路由功能
  • 中间件功能
  • 扩展了req和res对象
  • 可以集成其他模版引擎

Express的安装:

npm i express -S

2.基本实例

使用express搭建一个基本的服务器:

  • 步骤一:引入express
  • 步骤二:创建服务对象 express()
  • 步骤三:设置路由,根据路径给客户端响应相关的数据
  • 步骤四:开启服务
//引入express
const express = require("express")
//创建服务对象
let app = express() //设置路由,监听根路径的访问
app.get("/",function(req,res){
res.send("<h1>这是首页</h1>")
}) //开启服务,监听80端口
var server = app.listen(80,function(){
//当前当前监听的端口号
var port = server.address().port
console.log(`Server running at http://127.0.0.1:${port}/`)
})

3.注册路由

  • 注册路由有几种方法
方法 说明
app.get() 只接收客户端get方式提交的请求,且路径必须一致,(忽略query参数)
app.post() 只接收客户端post方式提交的请求,且路径必须一致
app.all() 不限定请求的方法,但是请求路径要求严格匹配(可使用通配符*匹配所有路径)
app.use() 不限定请求的方法,get/post等都可以。路径模糊匹配,这个路径和他的子路径都可以匹配
  • app.all()与 app.use()的区别:一个是路径模糊匹配(可匹配/api/xxx等接口),一个是精确匹配(可使用通配符*)

4.向客户端响应数据

  • 设置响应头:res.header()
app.all('*', function (req, res, next) {
//跨域允许访问的域名(通配符表示所有域名皆可访问,多个域名用都好隔开)
res.header("Access-Control-Allow-Origin",'*')
//跨域允许的header包含哪些字段
res.header("Access-Control-Allow-Headers","Content-Type,Authorization,X-Requested-With")
//跨域允许的请求方式
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS")
// 可以带cookies
res.header("Access-Control-Allow-Credentials",1)
//执行下一步(跳转到下一个路由判断中)
next()
})
  • 设置HTTP状态码:res.status()
//设置路由,监听根路径的访问
app.get("/unlogin",function(req,res){
//返回数据
res.status(401).end('未登陆')
})
  • 向客户端响应数据:res.send(),它会自动发送更多的响应报文头,无需手动设置Content-type(响应数据的同时内部会调用red.end()方法结束此次响应,当前也意味着res.send()只能发送一次)
//发送数组给客户端
res.send([0,1,2,3])

//发送对象给客户端
res.send({name:"雍正",age:45})

  • 向客户端响应数据:res.end(),它需要设置Content-type,且只能接收字符串和Buffer,其他类型的数据会报错

5.获取get传参

  • 在路径后面拼接 ?key1=val1&key2=val2 的方式被称为 query传参,例如:
http://127.0.0.1/process_get?year=2019&mouth=12&day=13
app.get("/process_get",function(req,res){
console.log(req.query.year)//2019
console.log(req.query.mouth)//12
console.log(req.query.day)//13
res.send("欢迎访问get提交页面")
})
  • 通过设置占位符 ,将原本属于路径的信息截取下来的成为params传参。这个方式需要注册路由的时候设置占位符,例如:
http://127.0.0.1/date/2012/12/12
app.get("/date/:year/:mouth/:day",function(req,res){
console.log(req.params.year)//2012
console.log(req.params.mouth)//10
console.log(req.params.day)//13
res.send('欢迎访问params页面')
})

6.获取post传参

  • 中间件:post方式提交的数据存放到请求体中,不在请求头,要解析请求体的数据,需要用到中间件 body-parse

  • 参数位置:安装body-parse,并引入入口文件中,进行相应的配置后,req会多出一个属性req.body,post方式提交的数据就存放在req.body中

  • 安装body-parse

npm install body-parse
  • 引入 body-parse 进行相应的配置
var app = express()
var bodyParser = require('body-parser') var app = express() // parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
// parse text
app.use(bodyParser.text()) app.post("/process_post",function(req,res){
res.send("欢迎访问post提交页面")
console.log(req.body)
})

{year:'2019',mouth:'10',day:'13'}

7.静态资源托管服务

  • express.static():可以进行静态资源托管服务,一般与app.use()注册路由搭配使用
//加载express
const express = require('express');
const path = require('path'); //创建服务对象
var app = express(); //访问/static下的路径视为访问静态资源 http://example.com/static/3.png => public/3.png
app.use('/static', express.static(path.join(__dirname,'public'))); //启动服务
app.listen(8080,function(){
console.log('http://localhost:8080');
})
  • 设置多个根目录(当 public目录中找不到 资源文件时会接着去public2找)
app.use('/static', express.static(path.join(__dirname,'public')));
app.use('/static', express.static(path.join(__dirname,'public2')));

Node.js Express 框架(1)的更多相关文章

  1. Node.js Express 框架

    Node.js Express 框架 Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP ...

  2. Node.js Express框架

    Express 介绍 Express是一个最小的,灵活的Node.js Web应用程序框架,它提供了一套强大的功能来开发Web和移动应用程序. 它有助于基于Node Web应用程序的快速开发.下面是一 ...

  3. Node.js Express 框架学习

    转载:http://JavaScript.ruanyifeng.com/nodejs/express.html#toc0 感觉很牛的样子,不过觉得对初学者没太大用,里面很多例子用的api都没有详细的说 ...

  4. Node.js Express 框架 Express

    Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速 ...

  5. 44.Node.js Express 框架--web框架

    转自:http://www.runoob.com/nodejs/nodejs-express-framework.html Express 简介 Express 是一个简洁而灵活的 node.js W ...

  6. Node.js+Express框架+Mongo学习(一)第一个node.js实例

    1.在桌面新建一个空的文件夹,比如叫node,当然也可以在其它地方新建. 2.命令行进入到所新建的文件夹的目录,下载Express框架,再在这个文件夹里新建一个叫final的项目 3.在项目(fina ...

  7. Node.js Express 框架 POST方法

    POST 方法 以下实例演示了在表单中通过 POST 方法提交两个参数,我们可以使用 server.js 文件内的 process_post 路由器来处理输入: index.htm 文件代码修改如下: ...

  8. Node.js Express 框架 GET方法

    GET 方法 以下实例演示了在表单中通过 GET 方法提交两个参数,我们可以使用 server.js 文件内的 process_get 路由器来处理输入: index.htm 文件代码如下: < ...

  9. node.js+express框架 修改后自启【不需要再执行start】

    我们每次修改完后都需要重新启动下才能刷新,就很麻烦'nodemon'解决了这个问题. 这里直接进行全局安装 npm install -g nodemon 安装到本地 npm install nodem ...

  10. Node.js Express 框架2

    文件上传 以下我们创建一个用于上传文件的表单,使用 POST 方法,表单 enctype 属性设置为 multipart/form-data. index.html <html> < ...

随机推荐

  1. HTML——简介-入门

    W3C标准:网页主要由三部分组成 结构:HTML 表现:CSS 行为:JavaScript HTML快速入门   1.新建文本文件,后缀改为 .html   2.编写HTML结构标签(不区分大小写) ...

  2. 为什么我觉得需要熟悉vim使用,难道仅仅是为了耍酷?

    实例说话: 使用vscode保存,有报提示信息,可以以超级用户身份重试,于是我授权root给vscode软件,却还提示失败! 而实际上,我使用cat命令发现已经写入成功了 终端内使用cat这条shel ...

  3. Java远程连接服务器实现文件上传下载及目录操作

    详情请阅读原文 在其基础之上做了进一步的封装 <!-- https://mvnrepository.com/artifact/com.jcraft/jsch --> <depende ...

  4. iOS使用SourceTree回滚回滚小结

    代码回滚,适用于的场景: 1.提交错代码,想放弃刚刚提交的部分:2.代码发生冲突,处理比较麻烦,为了代码安全,直接回滚到之前干净的代码.我个人理解,可以分为本地回滚和远程回滚: 一.本地回滚,回滚自己 ...

  5. axios有没有做过⼀些业务封装?

    啊,有的,在项⽬⾥⾯我主要是封装过axios的拦截器部分 我在请求拦截器⾥⾯做了注⼊全局token的事情,这个事⼉是因为有很多接⼝都需要这个token来做数据 鉴权,为了避免书写多次 统⼀配置了⼀下 ...

  6. kotlin类和对象—>类与继承

    1.类的定义,kotlin中依旧使用关键字class声明类,类声明由类名.类头(指定其类型参数.主构造函数等)以及由花括号包围的类体构成.类头与类体都是 可选的;如果一个类没有类体,可以省略花括号. ...

  7. Nessus 安装 笔记

    Nessus 安装 笔记 根据 https://www.zwnblog.com/archives/nessus-jie-shao-yu-an-zhuang#2.kali%E5%AE%89%E8%A3% ...

  8. Fluent Operator v2.0 发布:Fluent Bit 新的部署方式——Fluent Bit Collector

    2019 年 1 月 21 日,KubeSphere 社区为了满足以云原生的方式管理 Fluent Bit 的需求开发了 FluentBit Operator.此后产品不断迭代,在 2021 年 8 ...

  9. Unity 华为快游戏JS桥接 实现写日志等功能

    之前接入微信小游戏本身代码js桥接比较完善,抖音小游戏有缺少但也没缺的这么多,华为这边的API,大残啊!官方转换插件Github仓库上一次提交在3月份.(截至现在)API给的很简略,接入js代码那里说 ...

  10. 干活总结 | SQL 语法速成手册

    本文针对关系型数据库的一般语法.限于篇幅,本文侧重说明用法,不会展开讲解特性.原理.本文内容包括基本概念.增删改查.子查询.连接和组合.函数.排序和分组.数据定义.事务处理.权限管理等等. 一.基本概 ...