牢骚
前不久刚完成系统分析与设计课程的团队作业,在这次团队开发中,我负责的是服务端代码。在这方面我是个百分百的小白,之所以会接服务端的锅,一是因为团队里的其他队员也没有相关经验,二是想锻炼自己,毕竟整个大学学习生涯也不能只了解前端开发的知识。
整个团队作业持续了大概三个月,总的来说还是学到了不少东西的。服务端我选择的是NodeJS+Express+MySQL的框架,选择理由的话…是因为大佬推荐,毕竟我在这方面真的是完全不懂,所以只能靠问别人啦。总的来说Express的确是挺适合新手使用的一种框架,提供了各种中间件来完成业务逻辑,简化代码,提高开发效率,下面我就来说几点比较常用的知识点,给大家作参考。
参数传递
- GET方法的参数
用req.query.XX
即可获取var app = express(); var router = express.Router(); app.use(bodyParser.urlencoded({ extended: false })); router.get('/users', function(req, res, next) { const sql = 'select `uid` from `operations` where mid=' + req.query.mid + ';'; db.query(sql, function(err, rows) { if (err) { res.json(200, { msg : "mission not exists" }); } else { res.json(200, rows); } }); });
- 占位符传参
即localhost/user/xxx
的形式var router = express.Router(); router.get('/user/:name', function(req, res, next) { res.json(200, { msg : "Name is" + req.params.name }); });
- Request body参数
这种传参方式是最常见的,常用在POST、PUT和DELETE方法里var router = express.Router(); router.post('/user', function(req, res, next) { res.json(200, { msg : "Name is" + req.body.name }); });
图片传输
- 接收图片
接收图片其实是接收文件的一种,我使用的是multer中间件//dest参数是图片保存在本地的位置 var router = express.Router(); const upload = multer({ dest: 'C:/Users/Administrator/Desktop/image' }) router.post('/image', upload.single('file'), function(req, res, next){ var file = req.file; res.json(200, { msg : 'success', imgs_url : 'http://example.com/image/' + file.filename //返回图片URL }); });
- 发送图片
发送图片其实指的是客户端能通过URL访问服务器上的图片var router = express.Router(); router.get('/image/:name', function(req, res, next) { //建议使用绝对路径查找图片 const rs = fs.createReadStream('../../../image/' + req.params.name); rs.pipe(res); });