express的通信

http请求

  • app.get
    • 主要用于前后端get通信方式处理
        var express=require("express");
        var app=express();
    
        app.get("/a",function(req,res){
            res.send("hello")
        })
        app.listen(4001);
    
  • app.post
    • 主要用于前后端post通信方式处理
        var express=require("express");
        var app=express();
    
        app.post("/a",function(req,res){
            res.send("hello")
        })
        app.listen(4001);
    
  • 使用node运行文件,此时就相当于提供了一个后端服务,那我们如何测试呢?
  • 作为node写后端,我不可能还写个前端ajax单独测试,这里面需要安装apipost,关于apipost的安装和使用见下一章节,没有用过的可以去下一章看下。

express基本路由

  • 路由: 路由是指确定应用程序如何响应客户机对特定端点的请求,该端点是URI(或路径)和特定HTTP请求方法(GET、POST等)。简单的说路由就是后端提供给前端的服务地址(API)
  • expres里面路由定义方式
    • app.METHOD(url, callback)
  • 支持的方法有以下几种
    1. GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
    2. 与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
    3. POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
    4. DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。
    5. ALL请求可以接受前端所有类型请求
        var express=require("express");
        var app=express();
        app.put("/a",function(req,res){
            res.send("hello")
        })
        app.delete("/a",function(req,res){
            res.send("hello")
        })
        app.all("/a",function(req,res){
            res.send("hello")
        })
        app.listen(4001);
    

路由文件分离

  • 在日常开发里面我们不可能把所有的路由全部写到项目入口文件index.js,这样一个文件太大了,导致代码阅读性特别差,所以我们都会对关于路由的逻辑进行分离,单独放到一个文件router.js,然后再到入口文件导入这个文件。
  • 分离文件路由文件我们就需要使用到另一种express路由的写法
// router.js 路由文件
const express = require('express')
const router = express.Router()

router.get('/getList', (req,res)=>{
    res.send('get方式返回的数据');
})
router.post('/postList', (req,res)=>{
    res.send('post方式返回的数据');
});

module.exports = router
  • 入口页可以使用app.use()方法导入外部的路由文件,关于app.use的用法我们下面讲解,这里你可以理解成一种注入的固定写法
// app.js 入口文件
const express = require('express');
const app = express();

const router = require('./router')
app.use(router)
app.listen(3000, function () {
  console.log('Example app listening at http://localhost:3000');
});
  • Router是可以嵌套的,如果你想划分的更细,一个子路由还以引用子子路由,不断分下去。比如说我们可以将路由按照功能分为不同模块的,user模块负责用户的功能,包含注册、登录、获取用户信息。cart模块负责购物车的功能,包含获取购物车列表,购物车数据的新增、删除、修改。
// user.js 用户模块
const express = require('express')
const router = express.Router()

router.post('/register', (req,res)=>{
    res.send('注册功能');
})
router.post('/login', (req,res)=>{
    res.send('登录功能');
})
router.put('/forgetPsw', (req,res)=>{
    res.send('忘记密码,找回密码功能');
})
router.get('/getInfo', (req,res)=>{
    res.send('获取用户信息功能');
});

module.exports = router
// cart.js 购物车模块
const express = require('express')
const router = express.Router()

router.get('/getList', (req,res)=>{
    res.send('获取购物车数据');
})
router.post('/add', (req,res)=>{
    res.send('登录功能');
})
router.put('/update', (req,res)=>{
    res.send('忘记密码,找回密码功能');
})
router.delete('/delete', (req,res)=>{
    res.send('获取用户信息功能');
});

module.exports = router
// app.js 入口页
const express = require('express');
const app = express();

const userRouter = require('./user')
const cartRouter = require('./cart')
app.use('/user', userRouter)
app.use('/cart', cartRouter)
app.listen(3000, function () {
  console.log('Example app listening at http://localhost:3000');
});
  • 可以利用apipost测试上述服务。
  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦逼的猿宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值