express简要代码简读

express 是一个js的web框架,对http库进行了二次封装。下面是一段精简简要解读,带注释。
依赖npm外部库:express、body-parser、multer
body-parser是一个进行解析request的body段区域的js库
multer是一个进行解析文件upload的库
使用这三个库,会使js web开发变得更加优雅

var express = require('express');//express模块,需要安装
var bodyParser = require('body-parser');//body-parser模块,需要安装,解析body
var fs = require('fs');//fs模块
var multer = require('multer')//multer模块,需要安装
/**
访问目录,如果没有,则创建
*/
var createFolder = (folder)=>{
    try{
        fs.accessSync(folder);
    }catch(e){
        fs.mkdirSync(folder);
    }
}
//定义uploadFolder
var uploadFolder = './upload/';

//调用访问目录函数
createFolder(uploadFolder);

//调用存储
var storage = multer.diskStorage({
    destination : function(req,file,cb){
        cb(null,uploadFolder)
    },
    filename: function(req,file,cb){
        cb(null,file.originalname)
    }
})

//设置multer的存储路径
var upload = multer({storage: storage});

//启动express
var app = express()

//使用bodyParser解析头部
app.use(bodyParser.urlencoded({ extended:false }))
//使用bodyParser解析json
//app.use(bodyParser.json())

//post表单文件是commonfile,上传enctype="multipart/form-data"
app.post('/upload',upload.single('commonfile'),(req,res)=>{
    console.dir(req.body)
    res.send({'ret_code':0});
})

//get表单文件,使用fs进行发送
app.get('/form',(req,res)=>{
    res.sendFile(__dirname + '/form.html');//这句话与下面两句话等价
    //var form = fs.readFileSync('./form.html',{encoding:'utf8'});
    //res.send(form)
})

//post 使用JSON.stringify解析
app.post('/',(req,res)=>{
    console.dir(req.query);
    console.dir(req.body)
    res.send("post method: " + JSON.stringify(req.query) + '\n' )
})

//get 发送头部param的find属性
app.get('/',(req,res)=>{
    console.dir(req.query);
    res.send("home page: " + req.query.find)
})

//get 发送OBJ或者动态ID属性
app.get('/profile/:id',function(req,resp){
    var jsonObj = {
        name: "steve",
        age: '18'
    }
    // resp.send(jsonObj);
    // resp.json(jsonObj);
    console.dir(req.params);
    console.dir(jsonObj);
    resp.send("your request to see profile with id of " + req.params.id)
})

//监听端口
app.listen(8080);
console.log('listening to port 8080')

原文地址:https://www.cnblogs.com/littlepage/p/12181436.html

时间: 2024-08-30 12:07:12

express简要代码简读的相关文章

最简单的基于FFMPEG的转码程序分析 +ffmpga代码简析(转 +总结)

模块:  libavcodec    - 编码解码器         libavdevice   - 输入输出设备的支持         libavfilter   - 视音频滤镜支持         libavformat   - 视音频等格式的解析         libavutil     - 工具库         libpostproc   - 后期效果处理         libswscale    - 图像颜色.尺寸转换 1. ffmpga代码简析 1.1 av_log() av_

HTML代码简写法:Emmet和Haml

http://www.ruanyifeng.com/blog/2013/06/emmet_and_haml.html?bsh_bid=657901854 HTML代码简写法:Emmet和Haml 作者: 阮一峰 日期: 2013年6月11日 HTML代码写起来很费事,因为它的标签多. 一种解决方法是采用模板, 在别人写好的骨架内,填入自己的内容.还有一种就是我今天想要介绍的方法----简写法. 常用的简写法,目前主要是Emmet和Haml两种,本文都将加以介绍. 这两种简写法,功能相近,各有特点

大道至简 读后有感

大道至简  读后有感 结束大一的课程,自己总结收获,并没有觉得自己在计算机方面有了什么明显的进步,很想在以后的学习里能有所进步,而且这学期又新增了很重要的java课程,所以决定痛下决心,好好学习一番,便想以这<大道至简>作为开篇. 这几天看了本书的第一章,第一章的总体理念为编程的精义,共分为5个小结,即编程的精义,会或不会写程序,程序等于结构加算法,语言以及在没有工程的时代. 在编程的精义这一小节中,开篇便以愚公移山这一寓言故事来类比编程这一项工作,它通过古文中的话来形象的比喻了编程工作中的各

OpenStack之虚机冷迁移代码简析

OpenStack之虚机冷迁移代码简析 前不久我们看了openstack的热迁移代码,并进行了简单的分析.真的,很简单的分析.现在天气凉了,为了应时令,再简析下虚机冷迁移的代码. 还是老样子,前端的Horizon代码就省去了,直接看后端的代码实现,前端通过请求的action进入到nova/api/openstack/compute/contrib/admin_actions.py文件.代码如下: 1 @wsgi.action('migrate') 2 def _migrate(self, req

c#字符串加载wpf控件模板代码 - 简书

原文:c#字符串加载wpf控件模板代码 - 简书 ResourceManager resManagerA = new ResourceManager("cn.qssq666.Properties.Resources", typeof(cn.ijiami.keyboard.Properties.Resources).Assembly); string astring = resManagerA.GetString("axml_test"); LogUtil.write

简读《构建之法》,所想问题展示

1,<构建之法>这本书全局语言通俗,学生很容易读懂,但是存在一个隐患:学过软件工程,我们只是笼统的理解,而对这方面的专业知识很少了解,该怎么办? 2,书中提到的软件结构,软件设计与实现具体是怎样的?怎么理解它们之间的关系? 3,软件在不断更新和增加功能的负担下,一定程度下会崩溃.若有一个软件,即将考虑添加下一个功能,但是在添加这个功能之后,系统一定会崩溃,但是这个功能对这个软件的市场前景起着至关重要的作用,这是该怎么办? 4,软件设计和软件构建有区别吗?不同之处是什么? 5,当软件中的依赖关系

转载:深度学习caffe代码怎么读

原文地址:https://www.zhihu.com/question/27982282 Gein Chen的回答 Many thanks —————————————————————————————————————————— 1.学习程序的第一步,先让程序跑起来,看看结果,这样就会有直观的感受.Caffe的官网上Caffe | Deep Learning Framework 提供了很多的examples,你可以很容易地开始训练一些已有的经典模型,如LeNet.我建议先从 LeNet MNIST

[转] Android 命名规范 (提高代码可以读性)

Android命名规范编码习惯 刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名的那个控件什么是什么用的,就要读一遍甚至好几遍才知道,这样的话,在代码的 审查和修改过程中就会浪费不少不必要的时间.如果就是我一个人开发,一个人维护的话还好,可是如果一个项目是团队分工合作,这样让你的同事去看你的代码就 更加吃力了,因为大家之间的编程方式不一样,所以,在开发过程中,命名规范统一尤为重要,最好是团队中统一好大家命名方法,这样对于日后的工作会轻松很 多. 在面试的时候,审核一个程序员

简读《构建之法》提问

一.         文中提到了软件工程和计算机科学的关系与区别,那么究竟是软件催促着硬件的更新还是硬件的更新导致了软件的更新.文中说软件的重点在于构架,硬件上也有架构这一说,那么这两个之间有没有关系呢,是不是新的软件构架侧生了新的硬件架构. 二.       文中有一句很矛盾的话:百分之白的代码覆盖率不等同于百分之百的正确性,这里的代码覆盖率是什么意思.个人理解是代码所包含的所有可能的运行结果,如果是这样,那么既然所有的结果都包含了怎么会没有百分之百的正确性? 三.   书上说过有代码复审这一