首发于前端干货
使用Express搭建一个服务端简易实例,使用axios完成请求。

使用Express搭建一个服务端简易实例,使用axios完成请求。

1.什么是Express?

Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。

使用 Express 可以快速地搭建一个完整功能的网站。

Express 框架核心特性:

  • 可以设置中间件来响应 HTTP 请求。
  • 定义了路由表用于执行不同的 HTTP 请求动作。
  • 可以通过向模板传递参数来动态渲染 HTML 页面。

2.本教程实现什么?

  • 使用Express框架搭建一个简单的服务端实例
  • 在vue项目中利用axios请求搭建的服务端

注:该教程必须在node.js环境下

3.开始搭建

1.安装Express:

首先全局安装express框架:

npm install express -g  
npm install express-generator -g 

2.初始化一个项目:

(1)在任意一个地方建立一个文件夹,这里我随意起了一个名称:

(2)然后执行命令,初始化express应用:

express 项目名称 

(3)然后生成如下目录:

(4)命令行进入该文件夹:

cd myexpressdemo 

(5)安装依赖:

npm install 

(6)项目目录简单介绍:

/bin:用来启动应用(服务器)

/public: 存放静态资源目录

/routes:路由用于确定应用程序如何响应对特定端点的客户机请求,包含一个 URI(或路径)和一个特定的 HTTP 请求方法(GET、POST 等)。每个路由可以具有一个或多个处理程序函数,这些函数在路由匹配时执行。

/views: 模板文件所在目录 文件格式为.jade

目录app.js程序main文件 这个是服务器启动的入口

3.启动服务

npm start

然后在浏览器输入:localhost:3000/,若出现以下界面则启动成功:

4.编写基本代码

1.app.js里面主要代码介绍:

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

//路由信息 (接口地址)开始 存放在./routes目录下
var indexRouter = require('./routes/index');//home page接口
var usersRouter = require('./routes/users');//用户接口

var app = express();


// view engine setup(模板)
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);//在app中注册routes该接口 
app.use('/users', usersRouter);//在app中注册users接口

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

当我们在浏览器中 访问 http://localhost:3000/ 调用的就是index中的接口

我们打开index.js就可以看到该接口的定义:

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});
module.exports = router;

定义一个路由的基本格式为:

app.METHOD(PATH, HANDLER) 

其中:

app 是 express 的实例。

METHOD是 HTTP 请求方法

PATH 是服务器上的路径。

HANDLER 是在路由匹配时执行的函数。

以上的定义代表

在根路由 (/) 上(应用程序的主页)对 GET 请求进行响应:

2.实现一个获取用户信息接口

在routes文件夹下面新建一个user.js文件,并在里面定义一个User模型:

function User(){
    this.name;
    this.city;
    this.age;
  }
  module.exports = User;

然后回到users.js文件,在头部添加:

var URL = require('url'); 

然后继续添加其他内容:

var express = require('express');
var router = express.Router();
var URL = require('url');
var User = require('./user')

/* GET users listing. */
router.get('/', function(req, res, next) {
  res.send('respond with a resource');
});
router.get('/getUserInfo', function(req,res,next){
  var user = new User();
  var params = URL.parse(req.url,true).query;//获取URL参数,使用需要引入require('url');
  if(params.id == '1'){
    user.name = "ligh";
    user.age = "1";
    user.city = "北京市";
  }else{
      user.name = "SPTING";
      user.age = "1";
     user.city = "杭州市";
  }

  var response = {status:1,data:user};
  res.send(JSON.stringify(response));
})
module.exports = router;

调用方式:

http://localhost:3000/users/getUserInfo?id=1

或者

http://localhost:3000/users/getUserInfo?id=2

到这里我们就把获取用户信息接口完成了,下面我们在vue项目里面验证一下:

5.新建一个vue-cli项目

我的项目结构利用脚手架搭建完成之后是这个样子:

由于我们只是验证一下,项目里面的代码我们就不给予修改了。然后安装axios,利用axios来发起请求:

npm install axios --save 

修改main.js:

然后在app.vue里面新增一个请求方法:

然后启动项目:(注意:不要关闭express启动起来的服务

npm run dev 

这里报错了,原因是跨域问题,至于跨域问题可以自行百度。我们需要在express项目里面的app.js里面新增如下代码,解决跨域问题:

//设置允许跨域访问该服务.
app.all('*', function (req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  //Access-Control-Allow-Headers ,可根据浏览器的F12查看,把对应的粘贴在这里就行
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  res.header('Access-Control-Allow-Methods', '*');
  res.header('Content-Type', 'application/json;charset=utf-8');
  next();
});

最后:需要重启一下express服务,然后刷新浏览器:

这里看到数据已经成功请求到了,大功告成。


本片文章是由笔者学习的时候参考网上的文章综合编写成的,不足之处多多指出。

发布于 2018-12-03 21:50