/*
Koa 路由 get 传值
在 Koa2 中 GET 传值通过request接收,但是接收的方法有两种: query 和 querystring
query : 返回的是格式化好的参数对象
querystring : 返回的是请求字符串
*/
// 引入模块
const Koa = require("koa");
const router = require("koa-router")(); //引入和实例化路由
// 实例化
var app = new Koa();
// Koa 中间件
/* 以下中间件中,有两个参数,路由地址和函数 ,没有路由只写函数的话,表示 匹配任何路由 ;
如果没有 next ,路由终止, 参数且执行next()函数,则无法向下继续执行;
如果不写 next , 这个路由被匹配到了之后就不会继续向下匹配。
*/
// app.use(async (ctx) => {
// console.log(new Date()); //返回当前日期时间 2021-01-21T16:31:36.278Z
// });
app.use(async (ctx, next) => {
console.log(new Date()); //返回当前日期时间 2021-01-21T16:31:36.278Z
await next(); //当前路由匹配完成后继续向下匹配
});
// 配置路由,ctx (上下万 context) 整合了 response 和 reject
router
.get("/", async (ctx) => {
ctx.body = "hi 首页123"; //返回数据 相当于 res.writeHead() res.end()
})
.get("/news", async (ctx) => {
ctx.body = "这是新闻页面";
});
// 也可以如下写法
router.get("/newscontent", async (ctx) => {
ctx.body = "新闻详情页面";
});
/*
//作用:启动路由
app.use(router.routes())
//作用:这是官方推荐的用法,建议使用
//我们可以看到 router.allowedMethods() 用在了路由匹配 router.routes() 之后,
//所以在当所有路由中间件最后调用,此时根据 ctx.status 设置 response 响应头
app.use(router.allowedMethods())
app.use(router.allowOrgins()) //跨域使用
*/
app.use(router.routes()).use(router.allowedMethods());
app.listen(3002);
console.log("http://localhost:3002");