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测试上述服务。