【金秋打卡】第11天 《Node.js+Koa2+MySQL 打造前后端分离精品项目》
课程名称:Node.js+Koa2+MySQL打造前后端分离精品项目《旧岛》
课程章节:第3章 【让KOA更加好用】路由系统的改造
第4章【深入浅出讲异常】异步异常与全局异常处理
视频:3-7 初始化管理器与Process.cwd
4-1 参数获取与LinValidator校验器
课程讲师: 七月
课程内容:
//重构代码 //app.js const Koa = require('koa') //导入Koa const InitManager = require('./core/init') const app = new Koa() InitManager.initCore(app) app.listen(3000)
//重构代码 //init.js const requireDirectory = require("require-directory"); const Router = require('koa-router') class InitManager { //入口方法 static initCore(app) { InitManager.app = app InitManager.initLoadRouters() } static initLoadRouters() { requireDirectory(module, '../app/api', { visit: whenLoadModule }) function whenLoadModule(obj) { if (obj instanceof Router) { InitManager.app.use(obj.routes()) } } } } module.exports = InitManager
//使用绝对路径的方法
//init.js const requireDirectory = require("require-directory"); const Router = require('koa-router') class InitManager { //入口方法 static initCore(app) { InitManager.app = app InitManager.initLoadRouters() } static initLoadRouters() { const apiDirectory = `${process.cwd()}/app/api` requireDirectory(module, apiDirectory, { visit: whenLoadModule }) function whenLoadModule(obj) { if (obj instanceof Router) { InitManager.app.use(obj.routes()) } } } } module.exports = InitManager
上述代码中的process.cwd()可以返回当前项目的绝对路径。 然后加上app/api,就能得到api目录所在的路径了。
传参的四种方式,
url路径中中传参,
在url最后的问号后传参。这是常见的两种传参形式。
在http的header传参
http的body中传参
//classic.js const Router = require('koa-router') const router = new Router() router.post('/v1/:id/classic/latest', (ctx, next) => { const path = ctx.params const query = ctx.request.query const headers = ctx.request.header const body = ctx.request.body ctx.body = { key: 'classic', path: path, query, headers, body } }) module.exports = router
通过postman 使用post 访问 http://localhost:3000/v1/4/classic/latest?param=banana
结果为:
{ "key": "classic", "path": { "id": "4" }, "query": { "param": "banana" }, "headers": { "token": "123123123", "content-type": "application/json", "user-agent": "PostmanRuntime/7.29.0", "accept": "*/*", "postman-token": "57113dad-4fb0-49c3-a4c6-7f92ff17c52d", "host": "localhost:3000", "accept-encoding": "gzip, deflate, br", "connection": "keep-alive", "content-length": "22" }, "body": { "key": "hello world" } } //可以看到所有参数都打印出来了。
课程收获:
七月老师这节课主要是重构代码,重构代码能让项目中的文件和路径看上去更清晰,可读性强。
然后讲了“硬编码”。硬编码是指把目录路径写死在文件中,这样可扩展性不好,当项目结构变化时,需要记得找到代码位置进行修改。应该使用配置文件的方法。把路径写在配置文件中。项目文件中读取配置文件中的信息。以后改动的话,只改动配置文件就可以。第二个方法是可以使用绝对路径。
传参和获取参数,因为有其他编程语言的基础,所以这里听起来比较简单,很快就能掌握。
七月老师自己写了一个验证器。LinValidator. 下节课将详细讲解LinValidator
七月老师非常注重在讲编程知识的同时,讲编程思维,讲知识和知识之间的关系。编程是实践性非常强的工作,学习知识最好的方法是放到项目中。做项目的目的不是做项目,最终要做出来自己的项目,业务承载的是编程知识。明天继续刷后边的课程。
共同学习,写下你的评论
评论加载中...
作者其他优质文章