node-express處理表單的接口

寫一個小接口,用postman測試接口是否可行😝😝javascript

import express from 'express'
import config from './config'
import router from './router'
import queryString from 'querystring'

const app = express()

app.use('/node_modules', express.static(config.node_modules_path))
app.use('/public', express.static(config.public_path))

// 解析處理表單 POST 請求體中間件
app.use((req, res, next) => {
  // 因爲表單 POST 請求可能會攜帶大量的數據,因此在進行請求提價的時候會分爲屢次提交
  // 具體分爲多少次進行提交不必定,取決於數據量的大小
  // 在 Node 中,對於處理這種不肯定的數據,使用事件的形式處理
  // 這裏能夠經過監聽 req 對象的 data 事件,而後經過對應的回調處理函數中的參數 chunk 拿到每一次接收到的數據
  //        data 事件觸發多少次,不必定
  // 當數據接收完畢以後,會自動觸發 req 對象的 end 事件,而後就能夠在 end 事件中使用接收到的表單 POST 請求體
  let data = ''
  req.on('data', chunk => {
    data += chunk
  })
  req.on('end', () => {
    // 手動給 req 對象掛載一個 body 屬性,值就是當前表單 POST 請求體對象
    // 在後續的處理中間件中,就能夠直接使用 req.body 了
    // 由於在同一個請求中,流通的都是同一個 req 和 res 對象
    req.body = queryString.parse(data)
    next()
  })
})

// 掛載路由容器(路由容器中組織了網站功能處理路由中間件)
app.use(router)

app.listen(3000, () => {
  console.log('server is running at port 3000...')
})
import express from 'express'

// 建立一個路由容器,將全部的路由中間件掛載給路由容器
const router = express.Router()

router.get('/', (req, res, next) => {
  res.render('index.html')
})

router.post('/advert/add', (req, res, next) => {
  // 接口客戶端提交的數據

  console.log(req.body)
})

// 經過 export default 暴露的接口成員不能定義的同時直接暴露
// 最好先定義,再暴露
// export default 能夠直接暴露字面量 {} 123
export default router
相關文章
相關標籤/搜索