實用!使用Node.js創建接口,使用postman測試接口

開發環境說明:
  • 要安裝mysql數據庫,安裝方法自行百度,可參考菜鳥教程裏面的安裝步驟:安裝MySQL數據庫,也可安裝一下可視化工具Navicat for MySQL。
  • 安裝Node.js、npm,安裝方法自行百度。
  • 編輯器VSCode或WebStorm,或其他前端編輯器。

接口能被成功訪問的條件:打開mysql服務,node服務(即運行js文件)。操作方法請自行查找,不是文章主題哈~

一、創建一個js文件,引入開發需要的各個模塊

以下幾個模塊需要使用npm install 模塊名 -Syarn add 模塊名安裝

const express = require('express')
const mysql = require('mysql')
const cors = require('cors')		// 跨域
const bodyParser = require('body-parser')   // 解析參數

二、代碼實現

  1. 監聽端口號:
const app = express()
const router = express.Router()
//啓動項目,端口號爲8000,監聽接口
app.listen('8000', () => console.log('服務啓動,http://localhost:8000/user'))
  1. 連接已經創建好的數據庫:
//數據庫信息,密碼一般,默認root,我這邊修改過
const database= {
  host: 'localhost',
  user: 'root',
  password: '****',//密碼
  port: '3306',//數據庫的端口
  database: 'xxxname',//數據庫名
  connectTimeout: 5000, // 連接超時
  multipleStatements: false // 是否允許一個query中包含多條sql語句
}
//連接數據庫
const conn = mysql.createConnection(database)
app.use(cors()) //解決跨域
app.use(bodyParser.json()) //json請求
app.use(bodyParser.urlencoded({ extended: false })) // 表單請求

數據庫user表:
數據庫user表
3. 創建接口,實現功能

  • 查詢
//查詢  '/user' 是一個接口路徑(自己定義)  req代表發起請求(request)   res代表接收請求(response)

app.get('/user', (req, res) => {
  const id = req.query.id
  const sqlStr = 'SELECT * From user';  // 選擇user表 根據你自己的表名  用json的格式輸出
  conn.query(sqlStr, id, (err, result) => {
    if (err) {
      return res.json({ code: 0, message: '獲取失敗', data: null,err:err })
    }
    console.log("result:", result)//打印看看變量值
    console.log("len:", result.length)//打印看看變量值
    if (result.length === 0) {
    return res.json({ code: 0, message: '數據不存在', affectedRows: 0 })
    }   
    return res.json({
    	 code: 200, msg: '成功', data: result
    });
    //res.json(new Result({data:result})) //這是我的另一種方法 Result是一個類,如果用這行代碼,請看文章最後我的函數定義。
  })
})

控制檯運行效果:
控制檯運行結果

  • 添加
//添加
app.post('/api/adduser', (req, res) => {
  const user = req.body;
  console.log(user);
  const sqlStr = 'insert into user set ?';
  conn.query(sqlStr, user, (err, result) => {
    if (err) {
      return res.json({ code: 0, message: 'error', affectedRows: 0 });
    }
    if (result.affectedRows === 0) {
      return res.json({ code: 0, message: "添加失敗", affectedRows: 0 })
    }
    res.json(new Result({ data: result })) //我用了類的方法,定義在文章末尾
  })
})

發送post請求,返回成功:
post發送請求
數據庫發生變化,新增了一條數據:
數據庫效果

  • 修改(假刪除,改變狀態,參數?id=1
// 根據ID修改 假刪除數據
app.get('/api/delUser', (req, res) => {
  const id = req.query.id;//查詢url的id
  const sqlStr = 'update user set isdel = 1 where id=?'
  conn.query(sqlStr, id, (err, result) => {
    if (err) return res.json({ code: 0, message: 'error', affectedRows: 0 });
    console.log("effectRows:", result.affectedRows);//1
    if (result.affectedRows === 0) return res.json({ code: 0, message: '刪除失敗', affectedRows: 0 })
    res.json({ code: 200, message: '刪除成功(更新isDel)', affectedRows: result.affectedRows })
  })
})

使用postman發送請求,返回成功
postman請求返回
表中id爲1的isdel狀態已修改:(剛纔是0)
isdel=1

  • 在body中攜帶參數的修改(修改id爲3的user值)
app.post('/api/updateuser', (req, res) => {
  const sqlStr = 'update user set ? where id = ?'
  conn.query(
    sqlStr,
    [req.body, req.body.id],
    (err, result) => {
      if (err) return res.json({ code:0, message: '更新失敗', affevtedRows: 0 })
      //影響行數不等於1
      if (result.affectedRows ===0 ) return res.json({ code: 1, message: '更新的用戶不存在', affectedRows: 0 })
      res.json({ code: 200, message: '更新成功', affectedRows: result.affectedRows })
    })
})

postman發送post請求返回結果圖:
postman發送請求返回結果
數據庫效果:
更改前:
更改前
更改後:
更改後
文章中有關Result類的定義,這裏使用的ES5語法,後續修改爲ES6語法再次發佈。

function Result({ code = 200, msg = '成功', data = {} }) {
  this.code = code;
  this.msg = msg;
  this.data = data
}

三、前端頁面異步訪問接口

這裏使用JQuery的ajax測試:

記得引入jQuery庫,也可引入jQuery庫的鏈接
<script src="jquery-3.3.1.min.js"></script>
<script>
  $.ajax({
    url: 'http://127.0.0.1:8000/user',  //接口地址,必須加上http://  否則會進入error
    type: 'get',
    data: {

    },//不傳遞參數
    success: function (res) {
      console.log(res)        //調用成功的回調
    },
    error: function (err) {
      console.log(err)        //調用失敗的回調
    }
  })
</script>

控制檯運行結果:
console結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章