Node+express實現後臺服務接口

1、準備工做

  建立代碼目錄,依次執行如下操做node

  1.(若沒有安裝過)安裝nodemysql

  2.npm init(package.jsonsql

  3.安裝express(請求)npm install express –save數據庫

2、編碼

  1.http封裝。http.js代碼以下:express

 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代碼以下:npm

 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代碼以下json

 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,能夠看到接口返回的結果。api

3、擴展——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,調用接口,能夠看到成功結果。

4、遇到的一些問題

  1.SyntaxError: Unexpected token export

  緣由:export default res

  Node和瀏覽器端所支持的模塊規範不一樣

  解決方法:module.exports = res

相關文章
相關標籤/搜索