axios發delete請求,后台收不到參數;


1、問題;

vue項目前台用axios發請求;由於之前也是一直用axios發請求,所以這一次遇到問題一臉懵逼;

  • 請求方式:delete;請求頭類型:'application/json;charset=utf-8'

    后台我用的是nodejsexpress

  • 解決:axios的請求頭設置錯誤;

    • 錯的設置;

      const _Axios = axios.create({
        headers: {
          'Content-Type': 'application/json,charset=utf-8'
        }
      })
      
    • 正確的設置;

      const _Axios = axios.create({
        headers: {
          'Content-Type': 'application/json;charset=utf-8'
        }
      })
      // 或者
      axios.defaults.headers.post['Content-Type'] = 'application/json;charset=utf-8'
      

      修改application/json,charset=utf-8后的;就可以了,后台就成功收到參數了;

      不設置也是可以的,因為默認就是application/json;charset=utf-8

  • 擴展:

    1、get請求:GET 請求不存在請求實體部分,鍵值對參數放置在 URL 尾部,瀏覽器把form數據轉換成一個字串(name1=value1&name2=value2...),然后把這個字串追加到url后面用?分割,加載這個新的url。因此請求頭不需要設置 Content-Type 字段。
    2、post請求:headers中有content-type這個字段一般包括:application/x-www-form-urlencoded、multipart/form-data、application/json、text/xml。
    

2、express接受參數;

如果是用express.router()的方式設計路由,那么你在接受參數時:

  1. 對於get請求來說可以在req.query中獲取url后面的參數:

    router.get('/note', (request, response, next) => {
      console.log(request.query)
    })
    
  2. 對於post請求來說,在不使用其它插件的情況下,只能采用原生獲取參數的方法;

    // 'Content-Type': 'application/json;charset=utf-8'
    router.post(/\/(add|import)/, (request, response, next) => {
      let body = ''
      request.on('data', function (chunk) {
        body += chunk // chunk是二進制數據
      })
      request.on('end', function (result) {
        console.log(result, '====', body, JSON.parse(body)) // 轉化為對象
      })
    })
    

    body就是獲取的參數,然后y用JSON.parse(body)進行解析。

  3. 使用插件body-parser

    const bodyParser = require('body-parser')
    const app = new express();
    app.use(bodyParser.json())	
    ...
    
    router.post('/note', (request, response, next) => {
      console.log(request.body)
    })
    

    然后就直接可以在req.body中來獲取請求過來的參數了。

  4. req.params

    // 適合獲取production后的id:http://localhost:3000/production/id
    router.get('/note', (request, response, next) => {
      console.log(request.params)
    })
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM