1. 程式人生 > 其它 >node搭建本地服務模擬介面,get/post/put/delete請求傳參

node搭建本地服務模擬介面,get/post/put/delete請求傳參

建立一個單獨的js檔案,用於啟動node服務。

npm install express安裝依賴

npm install express

app.js檔案

const express = require("express");

const bodyParser = require("body-parser");

const app = express();

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({ extended: true }))

app.listen(3000, () => console.log("server on http://localhost:3000"))


//定義方法 app.get('/getZsgcMsg', function (req, res) { res.json([{ word: '問心無愧', name: '張三', id: '1' }, { word: '捫心自問', name: '李四', id: '2' }, { word: '自言自語', name: '王小虎', id: '3' }, { word: '牛氣沖天', name:
'王三', id: '4' }, { word: '臥虎藏龍', name: '高小', id: '5' }, { word: '笑裡藏刀', name: '高小三', id: '6' }, { word: '坐井觀天', name: '啦三啦', id: '7' }]) }); // 搜尋 app.post('/search', function (req, res) { console.log(req.body); res.json(req.body) });
// 新增 app.post('/add', function (req, res ) { console.log('req.body', req.body) res.json(req.body) }); // 刪除 app.delete('/delete/:id', function (req, res) { console.log('req.params.id', req.params.id)
  //刪除接收引數為
req.params.id,形式與其他不同,使用時用/拼接
res.json(req.params.id) }); // 修改 app.put('/update', function (req, res) { console.log('req.body', req.body) res.json(req.body) });

選中目錄,node app.js啟動服務

正常使用介面

api.js檔案

import http from './http'


//獲取列表
function getTableDataList() {
    return http.get('/course-api/getZsgcMsg')
}


//新增
function addTableDataList(row) {
    let urlParams = new URLSearchParams()
    urlParams.append('row', row)
    return http.post('/course-api/add',urlParams)
}

//查詢
function searchTableDataList(likeWord) {
    let urlParams = new URLSearchParams()
    urlParams.append('likeWord', likeWord)
    return http.post('/course-api/search', urlParams)
}

//刪除
function deleteTableDataList(id) {
    return http.delete(`/course-api/delete/${id}`)
}

//修改
function updateTableDataList(row) {
    let urlParams = new URLSearchParams()
    urlParams.append('row', row)
    return http.put('/course-api/update', urlParams)
}

//匯出
export {
    getTableDataList,
    addTableDataList,
    searchTableDataList,
    deleteTableDataList, 
    updateTableDataList
}

使用(呼叫)

增加

    async confirm() {
      try {
          const row = {
            name: this.name, word: this.region
          }
          //row可以分開傳值,不需要改成json格式,修改一樣
          let data = await addTableDataList(JSON.stringify(row))
          if(data.status == 200){
            console.log(data)
          }
        }
      }
      catch (e) {
        console.log(e)
      }
    },

刪除

async deleteList(id){
      try {
        let data = await deleteTableDataList(id)
        if(data.status == 200){
          console.log(data);
        } 
      }
      catch(e){
        console.log(e);
      }
    },

修改

    // 修改
    async updateList(id){
      let msg = {
        id:id,
        name:this.modifyName,
        word:this.modifyRegion
      }
      try{
        let data = await updateTableDataList(JSON.stringify(msg))
        if(data.status == 200){
          console.log(data);
        }
      }catch(e){
        console.log(e);
      }
    },

查詢

    //搜尋
    async search(){
      try{
        let likeWord = this.input
        let data = await searchTableDataList(likeWord)
        if(data.status == 200){
          console.log(data);
        }
      }catch(e){
        console.log(e);
      }
    },
附:封裝axios(http.js檔案)配置代理(vue.config.js檔案)
// 封裝axios

// 對http請求進行封裝
import axios from 'axios'

// 使用自定義的配置檔案傳送請求
const instance = axios.create({
    baseURL: '',
    timeout: 100000,
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        // 'custome-header':'tianliangjiaoyu'
    }
});
// 新增請求攔截器
instance.interceptors.request.use(function (config) {

    // 在傳送請求之前做些什麼
    return config;
}, function (error) {
    // 對請求錯誤做些什麼
    return Promise.reject(error);
});

// 新增響應攔截器
instance.interceptors.response.use(function (response) {
    instance// 對響應資料做點什麼

    // eslint-disable-next-line no-debugger
    // debugger

    if (response.status === 200) {
        return response;
    } else {
        console.error("請求錯誤")
        console.error(response)
    }
    return response;
}, function (error) {
    // 對響應錯誤做點什麼
    return Promise.reject(error);
});

export default instance

vue.config.js檔案,配置代理解決跨域問題

module.exports = {
    configureWebpack: {
        // other webpack options to merge in ...
    },
    // devServer Options don't belong into `configureWebpack`
    devServer: {
        proxy: {
            //代理名稱
            '/course-api': {     //這裡最好有一個 /
                target: 'http://localhost:3000',  // 後臺介面域名
                changeOrigin: true,  //是否跨域
                //路徑重寫
                pathRewrite: {
                    '^/course-api': ''
                }
            },
        },
        // public: '192.168.0.246:8080',
        hot: true,
        // disableHostCheck: true,
    }
};