nodejs中获取get和post请求方式介绍

已被阅读 1381 次 | 文章分类:nodejs | 2018-11-28 22:31

在使用开发当中get主要有三种请求方式,那么对应的后端接口该如何相对应的获取到请求参数呢,下面简单介绍

一:get请求格式

get请求主要是对请求url的格式规定,无非就三种,下面一一简单介绍一下 本节使用demo

                                            
// 引入express模块 commonjs规范引入
const express = require('express')
// 实例化 express
const app = express()
// 定义要返回的值,后面可以从数据库查询返回
let json = {
    code: 200,
    msg: '请求成功',
    data:[ 
        {
            Id: '1',
            name: 'xiaobai',
            blog: 'http://www.xiaobaigis.com'
        },
        {
            Id: '2',
            name: 'yangsir',
            blog: 'http://xiaobaigis.com'
        }
    ]
}
// 定义接口类型以及地址
app.get("/api/getdata", function (req, res) {
    res.send(json)
})
// 启动服务器
app.listen(5438, function () {
    console.log("启动服务 http://localhost:5438 ")
})
                                
                                            
                                        

1. 格式一: 无条件请求

                                            
请求方式: http://localhost:5438/api/getdata

后台对应格式:
app.get("/api/getdata", function (req, res) {
    res.send(json)
})
        
                                            
                                        

2. 格式二: url地址后面带?

                                            
请求方式: http://localhost:5438/api/getdata?id=1

后台对应格式:
app.get("/api/getdata", function (req, res) {
    let param=req.query, // ?后面的参数值需要query属性获取
        dataArr=json.data;
    let mapArr=dataArr.filter((item)=>{
        if(item.Id==param.id){
            return item;
        }
    })
    res.send(mapArr[0])   // 返回id为1的对象
})               
                                            
                                        

/net/upload/image/20181125/6367877510267873007208242.png

3. 请求格式三: /id值

                                            
请求方式: http://localhost:5438/api/getdata/1

后台对应格式:
app.get("/api/getdata/:id", function (req, res) {    // :id的格式
    let param=req.params, // /后面的参数值需要params属性获取
        dataArr=json.data;
    let mapArr=dataArr.filter((item)=>{
        if(item.Id==param.id){
            return item;
        }
    })
    res.send(mapArr[0])   // 返回id为1的对象
})
                                            
                                        

二:post请求格式

post与get请求主要的区别是get请求参数通过url直接传值请求;post需要通过请求主体 post方式请求的话,不能直接通过req.query或者req.params方式获取参数值了,因为req对象没有请求主体信息;这时候继续安装一个包,实现流程如下

1. 安装 body-parser

                                            
npm install --save body-parser
                                            
                                        

2. 引入该包并注册方可使用,实现流程和上面一样,引入mysql模块,连接数据库,查询数据,再返回数据;

                                            
// 以能够通过bodyPaser获取req.body
const bodyParser=require("body-parser");
app.use(bodyParser.json())
                                            
                                        

/net/upload/image/20181125/6367877510267873007208242.png

3. 可以通过该包获取值 后台接口通过如下方式获取值

                                            
请求方式: 这里以vue的axios接口请求
Axios.post('http://localhost:5000/api/upload',
   {
    "id":1                      
    }).then(function(res){
        alert('success')
    })

后台对应格式:
app.post("/api/getdata", function (req, res) {
    let param=req.body,
        dataArr=json.data;
    let mapArr=dataArr.filter((item)=>{
        if(item.Id==param.id){
            return item;
        }
    })
    res.send(mapArr[0])
})
                                            
                                        

可以通过fiddler测试,测试注意下面框选:请求头指定参数格式为json字符串;请求主体必须是字符串,对象会报错

/net/upload/image/20181125/6367877647221331648876770.png

4. 从数据库读取方式一样

                                            
app.post('/api/getuser',function (req, res,next) {
    let username=req.body.username;
    connection.query(`select * from user where username = '${username}'`,function(err,results){
        if (err) {throw err;}
        else {
            res.send(results);
        }
    })
});
                                            
                                        

QQ:3410192267 | 技术支持 微信:popstarqqsmall

Copyright ©2017 xiaobaigis.com . 版权所有 鲁ICP备17027716号