NodeJS Express 基础使用

208 阅读2分钟
  • 环境搭建
1. 安装express
npm install express -save

2. 安装自动重启工具 nodemon
npm install -g nodemon

3. 加载express:
var express = require('express');                    

4. 使用express:
var app = express();                                 

5. 启动一个服务器来监听连接:
app.listen(3000, function () {                       
    console.log('server is running')
})
  • get请求:
app.get('/', function (request, response) {
    var responseObject = {
        name: 'Leiliming',
        arr: [{ name: 'yu' }, 3, 4, 5]
    }
    //将内容返回到页面上:
    response.send(responseObject) 
})
  • :id
app.get('/profile/:id', function (request, response) {
    console.dir(request.params)
    response.send("You reuquest to see a profile page " + request.params.id)
})

冒号id 相当于一个变量,用户请求的时候值是什么,用request.params.id取出来的就是什么

id是你自己设置的变量名,也可以换成别的名字

这种写法也可以 /profile/:id/:name/:high

  • 查询字符串query
假设用户请求:    http://localhost:3000/?find=hot
那么console.dir(request.query) 打印{find:hot}

假设用户请求:    http://localhost:3000/?find=hot&name=lei
那么console.dir(request.query) 打印{ find: 'hot', name: 'lei' }

app.get('/', function (request, response) {
    console.dir(request.query)
    response.send(request.query.find)
})
  • 处理POST请求
作用是让我们可以获取到post请求中body的数据

1. 安装body-parser中间件解析post
https://github.com/expressjs/body-parser
npm install body-parser --save

var bodyParser = require('body-parser')
-------------------------------------------------------------------------------------------
// 解析表单: parse application/x-www-form-urlencoded 
app.use(bodyParser.urlencoded({ extended: false })) 
app.post('/po',function (request, response) {
    console.dir(request.body)
    response.send(request.body.name)
})
-------------------------------------------------------------------------------------------
//解析json: parse application/json
app.use(bodyParser.json())
app.post('/po',function (request, response) {
    console.dir(request.body)
    response.send(request.body.name)
})
-------------------------------------------------------------------------------------------
//同时解析:
var jsonParser = bodyParser.json()
var urlencodedParser = bodyParser.urlencoded({ extended: true })
app.post('/po',urlencodedParser, function (request, response) {
    console.dir(request.body)
    response.send(request.body.name)
})
app.post('/upload',jsonParser, function (request, response) {
    console.dir(request.body)
    response.send(request.body.name)
})


2.express自带的解析json的方法
app.use(express.json()) 
  • 模拟用户请求接口的小方法
 1. vscode安装测试插件REST Client模拟用户请求
 2. postman工具
  • 上传文件

1. 安装multer库,处理文件上传操作
npm install --save multer

2.使用multer
var multer = require('multer')
var createFolder = function (folder) { //判断有没有folder地址,如果没有自动创建一个
    try {
        fs.accessSync(folder); //判断有没有文件夹,有的话抛出错误
    } catch (e) {
        fs.mkdirSync(folder);  //创建文件夹
    }
};
var uploadFolder = './upload/'; //文件上传后,保存的地址

createFolder(uploadFolder);

var storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, uploadFolder) // 保存的路径,备注:需要自己创建
    },
    filename: function (req, file, cb) {
        //1. 将保存文件名设置为 字段名 + 时间戳,比如 logo-1478521468943
        // cb(null, file.fieldname + '-' + Date.now())
        
        
        //2. 将保存的文件名设置为 上传文件原本的名字
        cb(null, file.originalname)
    }
})
var upload = multer({ storage: storage })

3.html怎么写上传文件?

form表单中,文件上传需要增加的属性 enctype="multipart/form-data"

<form action="/upload" method="post" enctype="multipart/form-data">
    <h2>单图上传</h2>
    <input type="file" name="logo">
    <input type="submit" value="提交">
</form>

4.接口写法
app.post('/upload', upload.single('logo'), function (request, response) {
    response.send({ 'ret_code': 0 })
    // ret_code,return code的缩写 ,一般来说0表示成功,1表示失败
})
  • 根据请求加载html文件
1. 引入fs模块(NodeJS 中,所有与文件操作都是通过 fs 核心模块来实现)。
var fs = require('fs')
app.get('/form', function (request, response) {//获取html并显示
    //方法1:
    // var form = fs.readFileSync('./form.html', { encoding: 'utf8' })
    // response.send(form)
    方法2:
    response.sendFile(__dirname + './form.html')
})