zoukankan      html  css  js  c++  java
  • Node+express实现后台服务接口

    一、准备工作

      创建代码目录,依次执行以下操作

      1.(若没有安装过)安装node

      2.npm init(package.json

      3.安装express(请求)npm install express –save

    二、编码

      1.http封装。http.js代码如下:

     1 const express = require('express')
     2 const app = express()
     3 
     4 // 设置跨域
     5 app.all('*', (req, res, next) => {
     6   res.header('Access-Control-Allow-Origin', '*')
     7   res.header('Access-Control-Allow-Headers', 'X-Requested-With')
     8   res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
     9   res.header('X-Powered-By', '3.2.1')
    10   res.header('Content-type', 'application/json;charset=utf-8')
    11   next()
    12 })
    13 
    14 // exports.app
    15 module.exports = app

      2.模拟数据。这里先采用构造json数据结构的方式,data.js代码如下:

     1 const res = [{
     2   data:213,
     3   num:444,
     4   age:12
     5 }, {
     6   data:456,
     7   num:678,
     8   age:13
     9 }]
    10 
    11 module.exports = res

      3.写接口。demo1.js代码如下

     1 const app1 = require('../http')
     2 const res1 = require('./data')
     3 console.log(app1)
     4 // 接口1
     5 app1.get('/getTest1', (req, res) => {
     6   res.status(200)
     7   res.json(res1)
     8 })
     9 
    10 // 配置服务端口
    11 const server = app1.listen(3000, () => {
    12   const host = server.address().address
    13   const port = server.address().port
    14   console.log('Listen at http://%s:%s', host, port)
    15 })

      4.运行。3个文件相关路径自己视情况配置。运行demo1.js文件开启服务,node ./demo1/demo1.js。此时打开浏览器,在地址栏输入http://localhost:3000/getTest1,可以看到接口返回的结果。

    三、扩展——mysql

      1.安装。npm install mysql -S

      2.引入mysql。另外req.body需要对表单数据进行解析,所以还需引入body-parser

       mysql.js如下:

    // 创建数据库链接
    const mysql = require('mysql')
    // 注意隐私
    const conn = mysql.createConnection({
      host: 'XXX',
      user: 'XXX',
      password: 'XXX',
      database: 'XXX'
    })
    
    // 注册 解析表单的body-parser
    // const bodyParser = require('body-parser')
    // conn.use(bodyParser.urlencoded({extended:false}))
    module.exports = conn

        sql.js如下:

    function sqls() {
      this.GETALL_SQL_NODETEST = 'select * from nodeTest where isdelete=0'
      this.GETBYID_SQL_NODETEST = 'select * from nodeTest where id=?'
    }
    
    module.exports = sqls

       3.编写接口

        demo2.js如下:

     1 /* document.all.filter(e => {
     2   return e.style.font-family.toLowerCase().indexOf('yahei') > -1 || e.style.font-family.toLowerCase().indexOf('雅黑') > -1
     3 }) */
     4 const conn1 = require('../mysql')
     5 const sqls = require('./sql')
     6 const app = require('../http')
     7 
     8 // 注册 解析表单的body-parser
     9 const bodyParser = require('body-parser')
    10 app.use(bodyParser.urlencoded({extended:false}))
    11 
    12 // 配置服务端口
    13 const server = app.listen(3000, () => {
    14   const host = server.address().address
    15   const port = server.address().port
    16   console.log('Listen at http://%s:%s', host, port)
    17 })
    18 
    19 const sqlObj = new sqls()
    20 
    21 // getAll
    22 app.get('/api/getAll', (req, res) => {
    23   const sql = sqlObj.GETALL_SQL_NODETEST
    24   console.log(sql)
    25   conn1.query(sql, (err, result) => {
    26     console.log(result)
    27     if (err) return res.json({err_code: 0, msg: '查询失败', affectedRows: 0})
    28     res.json({
    29       err_code: 1, msg: result, affectedRows: 0
    30     })
    31   })
    32 })
    33 
    34 // getById
    35 app.get('/api/getById', (req, res) => {
    36   const id = req.query.id
    37   const sqlStr = sqlObj.GETBYID_SQL_NODETEST 
    38   conn1.query(sqlStr, id, (err, results) => {
    39       if(err) return res.json({err_code: 1, msg: '获取数据失败', affectedRows: 0})
    40       if(results.length !== 1) return res.json({err_code: 1, msg: '数据不存在', affectedRows: 0})
    41       res.json({
    42           err_code: 1,
    43           msg: results[0],
    44           affectedRows: 0
    45       })
    46   })
    47 })

        这里只列举了两个查询接口,其他接口暂不赘述。同理,运行demo2.js,调用接口,可以看到成功结果。

    四、遇到的一些问题

      1.SyntaxError: Unexpected token export

      原因:export default res

      Node和浏览器端所支持的模块规范不同

      解决方法:module.exports = res

    FIGHTING
  • 相关阅读:
    某不知名的树形Dp
    HDU-5963 朋友 思维
    CF1292C Xenon's Attack on the Gangs
    Emergency Evacuation 模拟了一下
    NOI2003 逃学的小孩
    UVA11300 Spreading the Wealth 数学
    ACWing 1510 楼梯
    测试代码高亮
    Pollard-rho的质因数分解
    米勒罗宾素数检测(Miller-Rabin)
  • 原文地址:https://www.cnblogs.com/ljwsyt/p/10515838.html
Copyright © 2011-2022 走看看