Node.js之服务器和Express

327 阅读2分钟

服务器和Express

网络通讯概述

网络通信三大要素: 协议,域名(IP),端口号;

通过ip找到计算机,再通过端口找到应用程序,符合规则就可进行数据传输。

传输协议:规定数据传输的规则,http或https或file;前端目前只接触这三项。

网络通讯的格式; 请求报文/响应报文;

域名或 IP:电子设备(计算机,服务器)在网络中的唯一标识。

localhost代表本机地址; 127.0.0.1代表本机地址;

端口:应用程序在计算机中的唯一标识。065535之间,01023的端口可能被系统占用。

80是 http 用; 443是 https 用

express 介绍

  • Express 是一个第三方模块,用于快速搭建服务器(替代http模块)

  • Express 是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架

  • Express保留了http模块的基本API,使用express的时候,也能使用http的API

    • 使用express的时候,仍然可以使用http模块的方法,比如 res.end()、req.url
  • express还额外封装了一些新方法,能让我们更方便的搭建服务器

  • express提供了中间件功能,其他很多强大的第三方模块都是基于express开发的

  • Express 官网

  • Express 中文文档(非官方)

安装 express

项目文件夹中,执行 npm i express@4.17.1。即可下载安装express。

注意:express不能安装在express文件夹中。否则安装失败。

使用Express构造Web服务器

使用Express构建Web服务器步骤:

  1. 加载 express 模块

  2. 创建 express 服务器

  3. 开启服务器

  4. 监听浏览器请求并进行处理

// 1.创建项目文件夹:   02_express
// 2.初始化    项目:   npm   init  -y
// 3.安装第三方模块:   npm   i   express@4.17.1// 4.导入
const express = require('express');
// 5.创建实例对象
const app = express();
​
// 启动服务
app.listen(3006, () => {
    console.log('http://localhost:3006');
})
​

编写接口

// 6.编写接口  -  req.method   req.url
app.get('/api/getbooks', (req, res) => {
    // 原生 http 模块中req上的属性
    console.log(req.method, req.url);
    // 原生 http 模块中res上的方法
    res.send('获取图书列表成功!');
});
app.post('/api/addbook', (req, res) => {
    res.send('添加图书成功!');
});

响应头设置

// 设置响应状态码
res.status(201);
// 设置其他响应头
res.set({
    "Content-Type": "application/json"
});

请求参数接收

1.请求路径中的参数,根据所在位置不同有两种:查询参数和路由参数;(get/delete常用)

查询参数: req.query

​ 路由参数: req.params

2.请求体参数一种,但是传递参数的类型,常见的有三种;(post/put常用)

请求体参数: req.body;

获取请求体参数需要配置一句话,三种类型对应三种不同的配置方式:

​ app.use( express.urlencode() ); 对应 content-type: application/x-www-form-urlencoded

app.use( express.json() ); 对应 content-type: application/json const upload = multer({ dest: 'uploads/' }); (需要下载)

​ app.use( upload.single('avatar') ); 对应 multipart/form-data

最后是原图

wallhaven-wq95oq.png