Node中配置路由可能出现的问题

  1.少写一个斜杠(比较蠢的问题)

app.get("api/jsonp",(req,res)=>{

  //1.获取请求的函数的名称
  const funcName = req.query.callback

  //2.定义服务器端要返回的数据
   const data = {
   name: "Bob",
   age:  18
  }
  
  //3.通过函数名称调用服务器端相应的函数 将javaScript对象data转化为json格式的字符串
   const resStr = `${funcName}(${JSON.stringfy(data)})` 
  // 将表示服务器端返回的信息的js对象data转化为json字符串作为funcName函数的参数并且调用该函数
  // 将函数返回的结果赋值给resStr
   
  //4.把要拼接的字符串响应给客户端
    res.send(resStr)
 
})

  一开始就错了 应该是: /api/jsonp

 2.配置中间件的时机问题

const express = require("express")

const app = express()

//导入路由模块 注册为全局中间件

app.use(express.urlencoded({extended:false})) 

//导入路由模块
const router = require("./apiRouter")
//注册外为全局中间件
app.use(router)

app.listen(80,()=>{
 console.log("server running at https://localhost:8080")
})

像这里,一定要先注册express.urlencoded()这个中间件函数 它用于解析url编码格式的请求体的数据,要先准备好解析工具 后续路由才能正确处理请求体数据

还有需要注意的一点是 在配置路由器监听的端口时 推荐传入数字类型的端口号

//推荐的做法
app.listen(80,()=>{
 console.log("server running at https://localhost:8080")
})
//不推荐的做法
app.listen("80",()=>{
 console.log("server running at https://localhost:8080")
})

 3.注册中间件时参数传入的问题

  下面用一段使用Express框架配置服务器并使用cors中间件处理跨域问题的代码引入该问题:

const express = require("express")

const app = express()

//一定要在路由配置之前引入cors中间件解决跨域问题
const cors = require("cors")
//将cors工具注册为全局中间件
app.use(cors)  //这里就出现问题了

app.use(express.urlencoded({extended:false})) 

//导入自定义路由模块
const router = require("./apiRouter")
/将router注册外为全局中间件  并将其挂载在/api路径下面
app.use("api",router)

app.listen(80,()=>{
 console.log("server running at https://localhost:8080")
})

在注册中间件时 应该传入的是一个中间件函数(通常) 或者是一个要挂载的路径和中间件函数

有时是多个中间件或者中间件数组

很明显 cors变量是一个函数 在注册为全局中间件时应该执行该函数即:

app.use(cors())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值