http请求
- app.get
var express=require("express");var app=express();app.get("/a",function(req,res){res.send("hello")})app.listen(4001);
- app.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)
- 支持的方法有以下几种
- GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
- 与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
- POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
- DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。
- 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路由的写法
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的用法我们下面讲解,这里你可以理解成一种注入的固定写法
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模块负责购物车的功能,包含获取购物车列表,购物车数据的新增、删除、修改。
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
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
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');});