[TOC]

Express API 总结

本文主要介绍express的主要API的使用。

参考了官网文档:https://expressjs.com/zh-cn/4x/api.html

http://expressjs.com/

  1. express 相关 API(介绍两三个重要 API 即可)
  2. app 相关 API(介绍两三个重要 API 即可)
  3. request 相关 API(介绍两三个重要 API 即可)
  4. response 相关 API(介绍两三个重要 API 即可)
  5. router 示例

1. 一个简单express服务例子

首先需要你电脑里面已经安装了nodejs,并且有终端。如果没有请自行安装。

打开终端,进入一个文件夹后,输入如下命令:

$ mkdir myapp
$ cd myapp
$ npm init
$ npm install express --save

使用编辑器打开这个文件夹,新建一个app.js的文件,内容如下:

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

保存文件后,终端运行如下命令:

$ node app.js

然后,在浏览器中输入 http://localhost:3000/ 以查看输出。

2. express相关的API介绍

2.1 express()

创建一个Express应用程序。该express()函数是express模块导出的顶级函数。

var express = require('express')
var app = express()

2.2 express.json

由于不知道用户会上传什么,有可能是json数据,有可能是大文件,所以express默认是以流的实行处理用户上传的数据。

express.json是内置中间件,此方法用于监听请求的data事件,如果发现接收的数据是JSON格式,那么就会解析成对象,然后把解析的数据放到请求的body里面。

const express = require('express')
const app = express()

const fn =  express.json() // 返回一个函数
app.use(fn)
app.use((request, response, next) => {
  console.log('request.body: ', request.body);
  response.send('hi')
  request.on('data', (chunk) => { // chunk是二进制数据
    console.log('chunk: ', chunk.toString());
  })
  next()
})

app.listen(3000, () => {
  console.log(`Example app listening at http://localhost:3000`)
})

终端命令请求:

curl -X POST \
  http://localhost:3000/ \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -H 'postman-token: 83881111-e8f1-4e0b-bf5c-2dc10ea4eeef' \
  -d '{
	"name": "frank",
	"age": 18
}'

注意:由于express.json()已经把data事件里面的JSON数据处理好了,所以在data事件就不会在接收到对应数据

2.3 express.static()

默认以参数为路径做一个静态服务器,如果访问的资源不存在,那么就会接着走express.static()下面的方法,

目录结构:

.
├── index.js
└── static
    └── index.html

index.js文件内容:

const express = require('express')
const app = express()

app.use(express.json())
app.use(express.static('static'))
app.use((request, response, next) => {
  console.log('request.body: ', request.body);
  response.send('hi')
  next()
})

app.listen(3000, () => {
  console.log(`Example app listening at http://localhost:3000`)
})

终端访问命令:

curl -X GET \
  http://localhost:3000/index.html \
  -H 'cache-control: no-cache' \
  -H 'postman-token: 96df26b3-5403-9c6a-127c-9919a20174bb'

上面的请求访问/index.html,express服务就会找到static/index.html文件,并返回资源。

curl -X GET \
  http://localhost:3000/style.css \
  -H 'cache-control: no-cache' \
  -H 'postman-token: df833ced-9878-8dd9-cdc5-3e6e173fb0a9'

如果请求的不存在,那么就会返回hi

2.4 express.raw()

如果发现请求的数据格式是:application/octet-stream,二进制格式文件,那么就是把请求的数据放到body中,不需要在自己处理请求的data事件。

2.5 express.text()

如果发现请求的数据是文本text/plain,那么就把请求的数据放到body中。

2.6express.urlencoded()

此中间件如果发现请求的数据格式是application/x-www-form-urlencoded,那么就会解析成对象,然后把解析的数据放到请求的body里面。

代码:

const express = require('express')
const app = express()

app.use(express.urlencoded())
app.use((request, response, next) => {
  console.log('request.body: ', request.body);
  response.send('hi')
  next()
})

app.listen(3000, () => {
  console.log(`Example app listening at http://localhost:3000`)
})

终端请求命令:

curl -X POST \
  http://localhost:3000/xxx \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/x-www-form-urlencoded' \
  -H 'postman-token: 6b0f152b-ad39-d2eb-cb40-ec5284192901' \
  -d 'name=frank&age=18'

3. application部分API介绍

Last Updated: 11/10/2020, 10:48:49 AM