zoukankan      html  css  js  c++  java
  • Node.js Express框架

    一、Express 介绍

        Express是一个最小的,灵活的Node.js Web应用程序框架,它提供了一套强大的功能来开发Web和移动应用程序。 它有助于基于Node Web应用程序的快速开发。Express框架的核心功能是:

    • 允许设立中间件响应HTTP请求
    • 定义了用于执行基于HTTP方法和URL不同动作的路由表
    • 允许动态渲染基于参数传递给模板HTML页面

    二、安装Express

    安装Express 框架全局使用NPM,以便它可以被用来使用Node终端创建Web应用程序。

    $ npm install express --save

    上面的命令在本地node_modules目录保存安装,并创建一个目录express在node_modules里边。还有,应该使用express安装以下几个重要的模块:

    u body-parser - 这是一个Node.js中间件处理JSON,Raw,文本和URL编码的表单数据

    u cookie-parser - 解析Cookie头和填充req.cookies通过cookie名字键控对象

    u multer - 这是一个Node.js的中间件处理multipart/form-data

    $ npm install body-parser --save

    $ npm install cookie-parser --save

    $ npm install multer --save

    三、Hello world 示例

         一个非常基本的Express应用程序,它会启动服务器,并侦听端口3000等待连接。这个应用程序使用"Hello World! "回应!为请求网页。 对于所有其他路径,这将响应一个404表示未找到。

    1、在F: odejs下新建server.js文件:

    var express = require('express');

    var app = express();

    app.get('/',function(request,response){

        response.send("Hello World");

    });

    var server = app.listen(8081,function(){

        var host = server.address().address

        var port = server.address().port

      console.log("Example app listening at http://%s:%s",host,port);

    })

        2、在node.js command prompt窗口下运行server.js文件

       

        3、在浏览器中访问http://localhost:8081/

     

    四、GET 方法:通过使用HTML表单使用GET方法传递两个值

    1、前端页面(index.html)

    <body>

        <form action="http://127.0.0.1:8082/process_get" method="GET">

           First Name:

            <input type="text" name="first_name">

            <br><br>

           Last Name:

             <input type="text" name="last_name">

            <br><br>

            <input type="submit" value="Submit">

        </form>

    </body>

     2、server.js:

    var express = require('express');

    const { response } = require('express');

    var app = express();

    app.get('/index.html',function(request,response){

        response.sendFile(__dirname+"/"+"index.html");

    });

    app.get('/process_get',function(req,res){

       let response = {

            first_name:req.query.first_name,

            last_name:req.query.last_name

        };

        console.log(req.query.first_name);

        res.end(JSON.stringify(response));

    });

    var server = app.listen(8082,function(){

        var host = server.address().address

        var port = server.address().port

        console.log("Example app listening at http://%s:%s",host,port);

    })

     

    五、POST 方法:通过使用HTML表单POST方法提交两个值

       1、前端页面(index.html):

    <body>

        <form action="http://127.0.0.1:8081/process_post" method="POST">

            First_Name:

            <input type="text" name="first_name">

            <br><br>

            Last_Name:

            <input type="text" name="last_name">

            <br><br>

            <input type="submit" value="Submit">

        </form>

    </body>

      2、服务文件(server.js)

    var express = require('express');

    var app = express();

    var bodyParse = require('body-parser');

    var urlencodeParser = bodyParse.urlencoded({extended:false});

    app.use(express.static('public'));

    app.get('/index.html',function(req,res){

        res.sendFile(__dirname+"/"+"index.html");

    })

    app.post('/process_post',urlencodeParser,function(req,res){

        let response = {

            first_name:req.body.first_name,

            last_name:req.body.last_name

        };

        console.log(response);

        res.send(JSON.stringify(response));

    })

    var server = app.listen(8081,function(){

        var host = server.address().address

        var post = server.address().port

        console.log("Example app listening at http://%s:%s",host,post);

    })

     

    六、文件上传:在HTML代码创建一个文件上传表单。提交方法设置为POST,以及enctype属性设置为 multipart/form-data

       1、上传页面(up.html)

     <body>

        <form action="http://127.0.0.1:8081/file_upload" method="post" enctype="multipart/form-data">

            <input type="file" name="file" size="50" />

            <br />

            <input type="submit" value="Upload File" />        

        </form>

    </body>

      2、服务器代码(upload.js)

    var express = require('express');

    var app = express();

    var fs = require("fs");

    var bodyParser = require('body-parser');

    var multer  = require('multer');

    app.use(express.static('public'));

    app.use(bodyParser.urlencoded({ extended: false }));

    app.use(multer({ dest: '/tmp/'}));

    app.use(express.static('public'));

    app.use(bodyParser.urlencoded({extended:false}));

    app.use(multer({dest:'/tmp/'}));

    app.get('/up.html',function(req,res){

        res.sendFile(__dirname+"/"+"up.html");

    })

    app.post("/file_upload",function(req,res){

        console.log(req.files.file.name);

        console.log(req.files.file.path);

        console.log(req.files.file.type);

        var file = __dirname+"/"+req.files.file.name;

        fs.readFile(req.files.file.path,function(err,data){

            fs.writeFile(file,data,function(err){

                if(err){

                    console.log(err);

                }else{

                     response = {

                        message:'File upload successfully',

                        filename:req.files.file.name

                    };

                }

                console.log(response);

                res.end(JSON.stringify(response));

            });

        });

    })

    var server = app.listen(8081,function(){

        var host = server.address().address;

        var port = server.address().port;

        console.log("Example app listening at http://%s:%s",host,port);

    })

     

    七、Cookies 管理:可以发送cookie来Node.js加载服务器,它可以处理使用下面的中间件选项。下面是一个简单的例子来打印所有客户端发送的cookie。

    var express      = require('express')

    var cookieParser = require('cookie-parser')

    var app = express()

    app.use(cookieParser())

    app.get('/', function(req, res) {

      console.log("Cookies: ", req.cookies)

    })

    app.listen(8081)

  • 相关阅读:
    【Azure Redis 缓存】Azure Redis 功能性讨论二
    【Azure Developer】如何用Microsoft Graph API管理AAD Application里面的Permissions
    【Azure 环境】通过Python SDK收集所有订阅简略信息,例如订阅id 名称, 资源组及组内资源信息等,如何给Python应用赋予相应的权限才能获取到信息呢?
    【Azure 应用服务】App Service与APIM同时集成到同一个虚拟网络后,如何通过内网访问内部VNET的APIM呢?
    【Azure 云服务】如何从Azure Cloud Service中获取项目的部署文件
    【Azure Redis 缓存】Azure Redis 异常
    【Azure 微服务】基于已经存在的虚拟网络(VNET)及子网创建新的Service Fabric并且为所有节点配置自定义DNS服务
    【Azure Redis 缓存】遇见Azure Redis不能创建成功的问题:至少一个资源部署操作失败,因为 Microsoft.Cache 资源提供程序未注册。
    【Azure Redis 缓存】如何得知Azure Redis服务有更新行为?
    【Azure API 管理】在 Azure API 管理中使用 OAuth 2.0 授权和 Azure AD 保护 Web API 后端,在请求中携带Token访问后报401的错误
  • 原文地址:https://www.cnblogs.com/lone5wolf/p/13826715.html
Copyright © 2011-2022 走看看