nodejs开发——express框架学习

      在我们实际开发项目时,总是会用一些框架,而不是自己从头开始开发。而在nodejs中,express框架就是一个使用频率最高的一个框架。本篇主要来讲解express的使用。

  • 加载express框架
       由于express不是系统框架,所以需要手动加载,在项目目录下使用命令“npm install express --save”   ,就可以在项目中集成express框架,使用--save参数是能自动把express的参数配置到项目的package.json中。


  • express创建服务
      使用express可以方便的创建一个服务器,从而响应客户端的请求,在js文件中实现如下:
//加载express模块
var express = require("express");
//创建一个express模块的实例
var app = express();

//创建服务,设置监听,设置端口号为3000
app.listen(3000, function () {

    console.log('Server running at http://127.0.0.1:3000/');
});

从代码中看到,express创建服务的方式与http模块非常类似,因为express本身就是封装了http模块。但是上面的代码还不能响应任何的url请求,这就需要借助下面的路由。

  • express路由
       路由就是用来处理不同url请求的,根据不同的请求,进行不同的响应内容。js文件实现如下:
var express = require("express");
var app = express();

//根据不同的请求进行响应
//主url的响应,后面不带子路径
app.get("/", function (req, res) {
    res.send("这是主页");
});

app.get("/getName", function (req, res) {
    res.send("查找名字");
    //获得请求url中的一些参数
    console.log("baseUrl:" + req.baseUrl);
    console.log("body:" + req.body);
    console.log("hostname:" + req.hostname);
    console.log("originalUrl:" + req.originalUrl);
    console.log("params:" + req.params);
    console.log("path:" + req.path);
    console.log("protocol:" + req.protocol);
    console.log("query:" + req.query);
    console.log("subdomains:" + req.subdomains);
});

app.listen(3000, function () {
    console.log('Server running at http://127.0.0.1:3000/');
});


然后进行测试,请求http://localhost:3000




请求http://localhost:3000/getName




同时,我在控制台上打印一些请求url中的信息:




  • Get请求与Post请求
       express同样可以非常方便的来处理不同的请求类型,比如Get请求和Post请求。上述的例子是使用Get请求,下面的我把getName接口设计成Post请求,代码修改如下:
var express = require("express");
var app = express();

//根据不同的请求进行响应
//主url的响应,后面不带子路径
app.get("/", function (req, res) {
    res.send("这是主页");
});

app.post("/getName", function (req, res) {
    res.send("post查找名字");
});

app.listen(3000, function () {
    console.log('Server running at http://127.0.0.1:3000/');
});

如果此时getName继续使用使用Get方式请求,就会发生如下错误:表示无法使用Get



如果使用post,则能成功返回:






  • 返回JSON格式
     JSON(JavaScript Object Notation)原意表示的就是JavaScript里的一个对象,所以在nodejs中返回JSON格式非常方便,也就是直接返回一个对象即可。下面修改getName接口,返回一个JSON格式:

var express = require("express");
var app = express();

//根据不同的请求进行响应
//主url的响应,后面不带子路径
app.get("/", function (req, res) {
    res.send("这是主页");
});

app.post("/getName", function (req, res) {
    // 输出 JSON 格式,JSON对象也可以嵌套
   var result = {
        first_name: "chen",
        last_name: "yufeng",
        age: 25
    };
    res.send(JSON.stringify(result));
});

app.listen(3000, function () {
    console.log('Server running at http://127.0.0.1:3000/');
});

Postman中请求结果如下:



  • 接收请求的参数
      在前端用某个url请求时,也可以携带参数,而在服务端也可以捕获这些参数,根据不同的参数进行返回(往往使用这些参数去查找数据库,会在后面的博客中介绍)。这里我们通过示例来演示:

var express = require("express");
var app = express();

//根据不同的请求进行响应
//主url的响应,后面不带子路径
app.get("/", function (req, res) {
    res.send("这是主页");
});

app.post("/getName", function (req, res) {
    // 输出 JSON 格式,JSON对象也可以嵌套
    console.log("性别:" + req.query.gender + ";国籍:" + req.query.country);
    var result = {
        first_name: "chen",
        last_name: "yufeng",
        age: 25
    };
    res.send(JSON.stringify(result));
});

app.listen(3000, function () {
    console.log('Server running at http://127.0.0.1:3000/');
});

请求的url中分别发送gender性别参数和country国籍参数,服务端获取后打印到控制台上,在Postman上请求如下:



在WebStorm控制台上打印如下:


由此可见,服务端已经成功获取到请求url中发送过来的参数了。这样就可以非常方便的进行前后端的数据交互了。




  • 使用路由进行模块化编程
       在nodejs中使用路由的最主要目的是进行模块化编程,即把不同请求需要执行的代码分开到不同的js文件中去,从而不需要把所有的业务代码都放在一个js文件中,这有利于代码维护和扩展。

在服务器主文件实现如下:
var express = require("express");
var app = express();

//根据不同的请求进行响应
//主url的响应,后面不带子路径
app.get("/", function (req, res) {
    res.send("这是主页");
});

//把getName这个请求由同一目录下的name.js来处理
var name = require("./name");
app.post("/getName", name.getName);

app.listen(3000, function () {
    console.log('Server running at http://127.0.0.1:3000/');
});

然后在同一目录下新建name.js文件,实现如下:
//使用exports导出该模块,可被外界调用,处理getName这个路由
module.exports.getName = function (req, res) {
    // 输出 JSON 格式,JSON对象也可以嵌套
    console.log("性别:" + req.query.gender + ";国籍:" + req.query.country);
    var result = {
        first_name: "chen",
        last_name: "yufeng",
        age: 25
    };
    res.send(JSON.stringify(result));
    res.end();
};

然后在Postman中请求结果如下,符合我们的预期,结果与上一个案例一样,但是项目结构更好,是强烈推荐的实现方式。

你可能感兴趣的:(Node.js开发,Node.js开发技术分享)