Express框架入门

1. 了解框架与库

1.1 什么是框架

框架就是一个半成品,用来快速解决某一类问题。

使用框架有遵守框架的使用规范。

1.2 常用的框架有哪些?

  • bootstrap
  • lay-ui
  • express
  • vua
  • react

1.3 什么是库?

库就是工具集,使用非常灵活。

1.4 有哪些库?

  • jQuery
  • day.js
  • underscore
  • art-template
  • axios
  • echart
  • zepto.js (移动端的jQuery)

2. 认识Express框架

概念:是一个基于node.js平台的web开发框架,是用来显示页面,以及提供接口的…框架

对于node.js来说express框架就是一个第三方的模块。

官网的网址:https://www.expressjs.com.cn/

3. 运行一个简单的express程序

3.1 第一步创建一个具有语义的项目文件夹名称

项目文件夹名称:leam-express

3.2 第二步工具文件的目录打开cmd窗口输入命令:npm init -yes

3.3 第三步下载express包输入命令:npm i express

3.4 第四步在package.json文件的同级目录上创建一个add.js文件

在add.js写入内容以下内容:(规定的基本写法,变量名不做要求)

  1. 加载 Express
  2. 调用 express() 得到一个 app
  3. 设置请求对应的处理函数
  4. 监听端口号,启动 Web 服务
//  1.加载 Express
const express = require('express')// 2. 调用 express() 得到一个 app
//    类似于 http.createServer()
const app = express()// 3. 设置请求对应的处理函数
//    当客户端以 GET 方法请求 / 的时候就会调用第二个参数:请求处理函数
app.get('/', (req, res) => {// res.send具备的功能 = http模块中res的功能 + express扩展的功能res.send('hello world 11')
})// 4. 监听端口号,启动 Web 服务
app.listen(3000, () => console.log('app listening on port 3000!'))

3.5 第五步启动程序

打开cmd窗口输入命令:node add.js (或者nodemon add.js : 使用这个nodemon的前提就是要有下到nodemon这个包。下载nodemon包的命令:npm install nodemon -g)推荐所有nodemon add.js 这个命令,修改代码无需重启服务器。

浏览器运行刷新一下:浏览器里面搜索:本机的地址 http://localhost:3000/

这里端口号是用:3000

// 4. 监听端口号,启动 Web 服务
app.listen(3000, () => console.log('app listening on port 3000!'))

4. 托管静态资源-web服务器

什么是托管静态资源?

就是统一处理静态资源,目的就是为了让用户可以直接通过url来访问这个资源。

5. 路由和接口

5.1 什么是路由?

  • 路由是由一个URL和一个特定的HTTP方法组成的。用户访问某个url地址时,页面反馈一些信息出来。
  • 涉及到了如何去处理客户端的请求。
  • 在后端叫路由,在前端叫接口。

5.2 路由的格式

const app = express();
//app.请求类型(请求地址,回调函数)
app.METHOD(PATH, HANDLER)
  • app 是 express 实例 。(const app = express())

  • METHOD 是一个 HTTP 请求方法。 全小写格式。如:post,get,delete等

  • PATH 是请求路径(相当于在http模块中用到过的 url.parse(req.url).pathname

  • ANDLER是当路由匹配到时需要执行的处理函数。(req,res)=>{ }`

6. 写一个带参数的express-get接口

概念:express框架会自动收集get请求方式从url地址中传递的出现字符串参数,并且保存在req对象的query属性中。req.query可以直接获取到

  • 参数:req.query直接可以获取到
  • 返回值:res.json(对象)

简单代码实现:

// 0. 加载 Express
const express = require('express')// 1. 调用 express() 得到一个 app
//    类似于 http.createServer()
const server = express()// 2. 设置请求对应的处理函数
//    当客户端以 GET 方法请求 / 的时候就会调用第二个参数:请求处理函数
server.get('/admin/category/search', (req, res) => {// express框架会自动将url地址中的字符串参数解析成json对象,并且保存在req对象的query属性中console.log(req.query);// res.send具备的功能 = http模块中res的功能 + express扩展的功能const { id } = req.queryif(!id){// 链接写法res.status(400).json({code: 400, msg:'id呢,id去哪了?'})return}const data =  {code: 200,msg: '获取成功',data: [{id: id, name:'小黑', slug:'爱旅行'}]}res.json(data)
})// 3. 监听端口号,启动 Web 服务
server.listen(3000, () => console.log('app listening on port 3000!'));

7. 写带参数的express-post接口——三种情况

7.1 post参数在请求体中的,他有三种情况

  • 普通键值对
  • json格式
  • form-data文件上传

7.2 普通键值对步骤:

  1. 使用中间件

    将在 请求体 中的携带的普通键值对 解析出来 保存在req.body中;

    server.use(express.urlencoded());
    
  2. 通过body获取post传递的键值对

    server.post("/xxxx",function(req,res){//可以通过req.body来获取post传递的键值对    res.json(req.body)
    });
    
  3. 可以用postman软件来测试请求(或者自己用ajax写一个post请求)

普通键值对代码演示:

// 0. 加载 Express
const express = require('express')// 1. 调用 express() 得到一个 app
//    类似于 http.createServer()
const server = express()// 将在 请求体 中的携带的 普通键值对 解析出来,保存在req.body中
server.use(express.urlencoded());// 2. 设置请求对应的处理函数
//    当客户端以 GET 方法请求 / 的时候就会调用第二个参数:请求处理函数
server.post('/post', (req, res) => {// express框架会自动将url地址中的字符串参数解析成json对象,并且保存在req对象的query属性中// 1. 接收参数console.log(req.body);// res.send具备的功能 = http模块中res的功能 + express扩展的功能res.json({code:200,msg:"创建成功"});
})// 3. 监听端口号,启动 Web 服务
server.listen(3000, () => console.log('app listening on port 3000!'))

###7.3 json格式

如果传递参数比较复杂的话(多级嵌套),就使用json格式上传。

  1. 多级嵌套格式如下:
let data = {name:"abc",address:{"a":1,"b":2,"info":"c","d":{"e":3}}
}

代码演示:

// 0. 加载 Express
const express = require('express')// 1. 调用 express() 得到一个 app
//    类似于 http.createServer()
const server = express()// 将在 请求体 中的携带的复杂的json格式数据 解析出来 保存在req.body中
server.use(express.json());
// 路由-post接口- json数据--复杂的嵌套的结构
// 它收到的参数是json格式的复杂对象
server.post('/postJSON', (req,res)=>{console.log(req);console.log('本次的请求头是',req.headers)// 1. 接收参数?console.log('收到的数据是:',req.body)// 2. 设置返回值res.json(req.body)})// 3. 监听端口号,启动 Web 服务
server.listen(3000, () => console.log('app listening on port 3000!'))

可以用postman软件来测试请求:

7.4 form-data文件上传

  1. 文件的上传:需要额外用到一个第三方的包 multer

  2. 安装multer包

    在cmd小黑色窗输入命令:

    npm i multer
    
  3. multer是一个node.js中间件,用与处理 multipart/form-data 类型的表单数据,主要是用来上传文件的。

postman软件来测试请求:

代码演示:

// 1.加载
const express = require('express')// 2.引入 multer
const mulet = require('multer');// 3. 配置
const upload = multer({dest:'uploads/'}) // 上传的文件会保存在这个目录下
// uploads表示一个目录名,你也可以设置成其它的const server = express()
// 路由-post接口- 接收formData格式的参数(文件)
server.post('/abc/abcd',upload.single('cover'), (req, res) => {console.log('本次的请求头是',req.headers);console.log('接收到的文件是', req.file);console.log('接收到的参数是',req.body);res.json(req.body)
})// 4. 监听端口号,启动 Web 服务
server.listen(3000, () => console.log('app listening on port 3000!'))

8. 理解接口传参

8.1 请求报文

我们做接口传参的时候,按照http协议的规定,每个请求都有三个部分:

  • 请求头

    可以附加很多信息,其中的content-type就是用来约定请求体中保存的数据格式

  • 请求行

    保存请求的方式,地址,可以查询字符串格式附加的一部分数据

  • 请求体

    本次请求携带参数,这些参数如何处理,由请求头的content-type来决定

8.2 传递方式

传参方式 前端 content-type 后端框架express
请求行 get方式 req.query
请求体 application/x-www-form-urlencode app.use(express.urlencoded()); req.body
请求体 application/json app.use(express.json()); req.body
请求体 multipart/form-data 1. 引入包 const multer = require(‘multer’);
2. 配置app.post(’/apiname’, upload.single(), req.body)

请求体 | application/json | app.use(express.json()); req.body |
| 请求体 | multipart/form-data | 1. 引入包 const multer = require(‘multer’);
2. 配置app.post(’/apiname’, upload.single(), req.body) |

Express框架入门相关推荐

  1. Express框架入门(三)结合 multer 上传图片

    Express框架入门(三)结合 multer 上传图片 一. Multer 模块介绍 二. Express 上传文件模块 multer 的使用 1. 安装 multer 2. 引入配置 multer ...

  2. node.js Express框架入门

    一.为什么要用Express框架? Node.js由于不需要另外的HTTP服务器,因此减少了一层抽象,给性能带了不少的提升,同时也因此提高了开发难度,实现一个POST数据的表单,例如: <for ...

  3. Nodejs学习笔记(五)--- Express安装入门与模版引擎ejs

    目录 前言 Express简介和安装 运行第一个基于express框架的Web 模版引擎 ejs express项目结构 express项目分析 app.set(name,value) app.use ...

  4. express-cli入门_使用Express.js入门

    express-cli入门 by Victor Ofoegbu 由Victor Ofoegbu 使用Express.js入门 (Getting off the ground with Express. ...

  5. html间数据传送,Express框架与html之间如何进行数据传递(示例代码)

    关于Node.js 的Express框架介绍,推荐看菜鸟教程的Express框架,很适合入门,这里不再赘述,这里主要讲一下Express框架与html之间如何进行数据传递 我采用的是JQuery的Aj ...

  6. 【11】 Express安装入门与模版引擎ejs

    前言 Express简介和安装 运行第一个基于express框架的Web 模版引擎 ejs express项目结构 express项目分析 app.set(name,value) app.use([p ...

  7. Express框架简介(详细)

    下面是对Express框架的简单介绍,希望可以帮助到有需要的小伙伴~ Express框架是什么 Express是一个基于Node平台的web应用开发框架,它提供了一系列的强大特性,帮助你创建各种Web ...

  8. node、express框架

    前面的话 Express是一个简洁.灵活的 node.js Web 应用开发框架, 它提供一系列强大的特性,帮助开发者创建各种 Web 和移动设备应用.本文将详细介绍express框架 概述 官网对E ...

  9. 【笔记-node】《Egg.js框架入门与实战》、《用 React+React Hook+Egg 造轮子 全栈开发旅游电商应用》

    20210226-20210227:<Egg.js框架入门与实战> 课程地址:https://www.imooc.com/learn/1185 第一章 课程导学 01-01 课程介绍 一. ...

  10. 『Scrapy』爬虫框架入门

    框架结构 引擎:处于中央位置协调工作的模块 spiders:生成需求url直接处理响应的单元 调度器:生成url队列(包括去重等) 下载器:直接和互联网打交道的单元 管道:持久化存储的单元 框架安装 ...

最新文章

  1. linux系统管理及vim
  2. 【逆序对】Ultra - Quicksort
  3. Linux指定网卡优先级,如何在Ubuntu中设置网络连接的优先级?
  4. 安卓心理测试实训代码_我是如何从测试转到开发的
  5. 还在封装各种 Util 工具类?这个神级框架帮你解决所有问题!
  6. iccv2020论文汇总_ICCV2019 最佳论文出炉,附1987~2019历届ICCV最佳论文汇总( 提供下载)...
  7. 抽象类,接口都与继承有关
  8. SNAT,是源地址转换,其作用是将ip数据包的源地址转换成另外一个地址
  9. 在ES6类中绑定事件
  10. jquery解析php json,使用jQuery解析PHP Json对象.
  11. anaconda navigator更新_Python 数据分析答疑 1:安装 Anaconda
  12. Android 科大讯飞离线语音识别
  13. 自学单片机编程(三) 流水灯代码
  14. 关闭虚拟机linux的防火墙,Linux新建虚拟机网络配置,防火墙关闭
  15. PCL学习笔记(20)——remove_outliers
  16. 微信小程序中商品列表 不显示
  17. 你应该具有的富人思维
  18. 新手做自媒体,最好掌握这4款视频制作软件
  19. Android 多通道录音笔记
  20. 一起学习C语言:C语言发展历程以及定制学习计划

热门文章

  1. 多人如何通过小程序上传照片、视频、素材、文章,然后点赞投票评选?
  2. NVIDIA GPU Compute Capability
  3. 利用螺纹钢期货对钢材采购成本做对冲_2020_10_24
  4. NX的尺寸控制与半径补偿(重要)
  5. html流控破解脚本,tc 流控脚本
  6. 正在移除icloud数据久_深度梳理一下iOS照片(相册)的逻辑,和减少iCloud的空间占用的方法...
  7. Netty客户端断线重连
  8. 创业1年半,烧光130万:我总结了哪些教训?
  9. 产品经理职责和工作内容
  10. vue子组件的使用和事件传递