美文网首页程序员iOS学习专题node
使用NodeJS搭建自己的接口服务器,提交APP的开发效率

使用NodeJS搭建自己的接口服务器,提交APP的开发效率

作者: Coding小学生 | 来源:发表于2017-07-07 15:27 被阅读570次

    原文链接:https://www.bigademo.com/2017/06/02/%E4%BD%BF%E7%94%A8NodeJS%E6%90%AD%E5%BB%BA%E8%87%AA%E5%B7%B1%E7%9A%84%E6%8E%A5%E5%8F%A3%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E6%8F%90%E4%BA%A4APP%E7%9A%84%E5%BC%80%E5%8F%91%E6%95%88%E7%8E%87/index.html

    之前工作中由于工作量问题,有时候需要等后台的同事写好接口才能联调。最近看了包建强老师的自己搭建服务器模拟数据的方法,忽然感觉发现新大陆一样,之前刚学了一些NodeJS的皮毛,想的自己搭建一个服务器。就是干!

    所需要的环境

    • NodeJS
      这里就不介绍怎么安装NodeJS了。
    • Express (Express中文网
      官方介绍说,Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。

    搭建Express服务器

    参考Express官网的文档就能轻轻松松的搭建,步骤如下:

    前提:

    已安装好Node.js,使用node -v 查看node的版本

    Express安装

    • Step1: 新建一个项目文件夹
    mkdir server
    cd server
    
    • Step2: 使用npm初始化这个文件夹为Node环境的,初始化以后会生成一个package.json的文件
    npm init
    
    • Step3: 安装Express框架
      Express分为全局环境和临时环境两种方式

    全局环境

    npm install express --save
    

    临时环境

    npm install express
    

    Express框架搭建

    前提: Express框架安装完成。
    直接下面的命令,让当前的文件夹用于express框架的文件结构

    cd server
    express
    

    初始化以后安装依赖

    npm install
    

    待安装完成后就安装完了express的文件和依赖会在server文件夹下生成如下文件

    .
    ├── app.js
    ├── bin
    │   └── www
    ├── package.json
    ├── public
    │   ├── images
    │   ├── javascripts
    │   └── stylesheets
    │       └── style.css
    ├── routes
    │   ├── index.js
    │   └── users.js
    └── views
        ├── error.jade
        ├── index.jade
        └── layout.jade
    

    文件配置,实现接口

    这里我们要看一下app.js,/routes/index.js, /routes/users.js 这几个文件。

    app.js

    这里主要看

    //设置接口的路径和数据
    var index = require('./routes/index');
    var users = require('./routes/users');
    
    //设置接口的路径和数据
    app.use('/', index);
    app.use('/users', users);
    

    上面两行代码是引入/routes/index.js/routes/users.js两个文件,而这两个文件中配置这我们需要的json数据。

    下面两行代码是我们访问json数据要用到的路径。我们可以配合和后台同事一样的路径,方便后期联调。

    /routes/users.js

    index.js和users.js的性质一样,这里以users.js讲解。

    var express = require('express');
    var router = express.Router();
    
    /* GET users listing. */
    router.get('/', function(req, res, next) {
        var json='{"accountid":"","data":{"picurl":"https://b-ssl.duitang.com/uploads/item/201409/07/20140907232842_SEJCX.jpeg","url":"http://www.jianshu.com"},"errorCode":"0000","msg":"","token":""}';
      res.send(json);
    });
    
    
    /* 获取新闻列表*/
    router.get('/getnews', function(req, res, next) {
      connection.query(
        'SELECT * FROM `news`',
        function(err,rows){
            res.json(rows);
        }
        );
    });
    
    /*获取要修改的news*/
    router.get('/curnews',function(req,res){
        var newsid=req.query.newsid;
        connection.query(
            'SELECT * FROM `news` WHERE id=?',
            [newsid],
            function(err,rows,fileds){
                res.json(rows);
            }
        );
    });
    /*删除新闻*/
    router.post('/delnews',function(req,res){
        var newsid=req.body.newsid;
        connection.query(
            'DELETE FROM `news` WHERE `id`=?',
            [newsid],
            function(err,result){
                console.log(result.affectedRows);
                res.json(result);
            }
        );
    });
    
    
    /*修改新闻*/
    router.post('/update',function(req,res){
        var newsid=req.body.newsid;
        var newstitle=req.body.newstitle;
        var newstype=req.body.newstype;
        var newsimg=req.body.newsimg;
        var newstime=req.body.newstime;
        var newssrc=req.body.newssrc;
    
        connection.query(
            'UPDATE `news` SET `newstype`=?,`newstitle`=?,`newsimg`=?,`newstime`=?,`newssrc`=? WHERE `id`=?',
            [xss(newstype),xss(newstitle),xss(newsimg),xss(newstime),xss(newssrc),newsid],
            function(err,rows){
                console.log("rows-------------"+rows);
                res.json(rows.changedRows);
            }
        );
        
    });
    
    /*添加新闻*/
    router.post('/insert',function(req,res){
         var newstitle=req.body.newstitle;
         var newstype=req.body.newstype;
         var newsimg=req.body.newsimg;
         var newstime=req.body.newstime;
         var newssrc=req.body.newssrc;
    
         connection.query(
            'INSERT INTO `news` (`newstype`,`newstitle`,`newsimg`,`newstime`,`newssrc`)  VALUES (?,?,?,?,?)',
            [xss(newstype),xss(newstitle),xss(newsimg),xss(newstime),xss(newssrc)],
            function(err,result){
                if(!err){
                        console.log(result.insertId);
                        res.json(result)
                    }
            }
         );
    });
    
    module.exports = router;
    

    这里需要注意的是

    • 如果使用POST提交数据,那么要使用req.body.*的参数获取字段;
    • 如果使用GET的方式获取数据,那么使用req.query.*的方式获取参数字段;

    启动server,获取接口数据,在默认器数据127.0.0.1:3000查看允许的效果。

    cd server
    npm install
    

    相关文章

      网友评论

        本文标题:使用NodeJS搭建自己的接口服务器,提交APP的开发效率

        本文链接:https://www.haomeiwen.com/subject/jizlhxtx.html