欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡單聊一聊axios配置請求頭content-type

 更新時間:2022年04月24日 08:58:52   作者:云城雪華  
最近在工作中碰到一個問題,后端提供的get請求的接口需要在request header設(shè)置,下面這篇文章主要給大家介紹了關(guān)于axios配置請求頭content-type的相關(guān)資料,需要的朋友可以參考下

前言

現(xiàn)在前端開發(fā)中需要通過Ajax發(fā)送請求獲取后端數(shù)據(jù)是很普遍的一件事情了,鑒于我平時在擼碼中用的是vue技術(shù)棧,今天這里來談?wù)勎覀兂S玫陌l(fā)Ajax請求的一個插件—axios。

> 現(xiàn)在網(wǎng)上可能發(fā)送Ajax請求有很多種插件,每種用法可能略有差異,大家只需挑選一種自己喜歡的即可。畢竟現(xiàn)在還有很多人使用jQuery,$.ajax用法也是很多了。

開始

因?yàn)樾枰玫絘xios插件,所以我們現(xiàn)在項(xiàng)目種下載依賴

npm install axios -S

axios雖然是一個插件,但是我們不需要通過Vue.use(axios)來使用,下載完成后,只需在項(xiàng)目中引入即可,至于為什么大家可以百度看看,或者留言,貌似是因?yàn)殚_發(fā)者在封裝axios時,沒有寫install這一步。

使用

比如我們在項(xiàng)目中的myInfo.vue中使用axios,當(dāng)組件在創(chuàng)建成功后發(fā)送Ajax請求得到用戶信息展示在我們面前。先引入,然后在組件生命周期函數(shù)created中發(fā)請求。

img

如果需要先請求數(shù)據(jù)然后根據(jù)數(shù)據(jù)渲染頁面展示在我們面前,通??梢栽诮M件生命周期鉤子created中發(fā)送Ajax請求即可,此時組件實(shí)例中的屬性和方法可以被調(diào)用。

img

現(xiàn)在到了重點(diǎn)的時刻了~~~

axios 使用 post 發(fā)送數(shù)據(jù)時,默認(rèn)是直接把 json 放到請求體中提交到后端的。也就是說,我們的 Content-Type 變成了 application/json;charset=utf-8 ,這是axios默認(rèn)的請求頭content-type類型。但是實(shí)際我們后端要求的 ‘Content-Type’: ‘application/x-www-form-urlencoded’ 為多見,這就與我們不符合。所以很多同學(xué)會在這里犯錯誤,導(dǎo)致請求數(shù)據(jù)獲取不到。明明自己的請求地址和參數(shù)都對了卻得不到數(shù)據(jù)。

我們現(xiàn)在來說說post請求常見的數(shù)據(jù)格式(content-type)

  • Content-Type: application/json : 請求體中的數(shù)據(jù)會以json字符串的形式發(fā)送到后端
  • Content-Type: application/x-www-form-urlencoded:請求體中的數(shù)據(jù)會以普通表單形式(鍵值對)發(fā)送到后端
  • Content-Type: multipart/form-data: 它會將請求體的數(shù)據(jù)處理為一條消息,以標(biāo)簽為單元,用分隔符分開。既可以上傳鍵值對,也可以上傳文件。

我們熟悉了常見的請求數(shù)據(jù)格式之后,現(xiàn)在我們來解決剛才遇到的問題: 后端需要接受的數(shù)據(jù)類型為:application/x-www-form-urlencoded,我們前端該如何配置:

常見方法匯總:

1.【用 URLSearchParams 傳遞參數(shù)】代碼簡單,省事

let param = new URLSearchParams()
param.append('username', 'admin')
param.append('pwd', 'admin')
axios({
    method: 'post',
    url: '/api/lockServer/search',
    data: param
})

可以看到我在項(xiàng)目中采用的就是第一種方法。> 需要注意的是: URLSearchParams 不支持所有的瀏覽器,但是總體的支持情況還是 OK 的,所以優(yōu)先推薦這種簡單直接的解決方案

img

2.配置axios請求頭中的content-type為指定類型

3.axios.defaults.headers.post[‘Content-Type’] = ‘application/x-www-form-urlencoded’;或者{headers:{‘Content-Type’:‘application/x-www-form-urlencoded’}}`

4.將參數(shù)轉(zhuǎn)換為query參數(shù), 利用qs

引入 qs ,這個庫是 axios 里面包含的,不需要再下載了。

import Qs from 'qs'
let data = {
    "username": "cc",
    "psd": "123456"
}

axios({
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    method: 'post',
    url: '/api/lockServer/search',
    data: Qs.stringify(data)
})

好了,我們解決了常見的application/x-www-form-urlencoded形式的傳參,那么對于后面的兩種又是怎樣轉(zhuǎn)換的呢,且聽我一一道來。

Content-Type: multipart/form-data

對于這種類型的數(shù)據(jù),我們常見前端頁面上傳個人圖像,然后點(diǎn)擊保存發(fā)送后端修改原始數(shù)據(jù)。解決辦法下:

  let params = new FormData()
        params.append('file', this.file)
        params.append('id', localStorage.getItem('userID'))
        params.append('userName', this.name)
        params.append('sex', this.sex)
        params.append('mobile', this.phone)
        params.append('email', this.email)
        params.append('qq', this.qq)
        params.append('weChat', this.WeChat)

        axios.post(URL, params, {headers: {'Content-Type': 'multipart/form-data'}}).then(res => {
          if (res.data.code === 0) {
            this.$router.go(-1)
          }
        }).catch(error => {
          alert('更新用戶數(shù)據(jù)失敗' + error)
        })

可以看到我這里就是用到了這種方法實(shí)現(xiàn)用戶圖像更新效果的~~

img

img

Content-Type: application/json

這種是axios默認(rèn)的請求數(shù)據(jù)類型,我們只需將參數(shù)序列化json字符串進(jìn)行傳遞即可,無需多余的配置。

總結(jié)

好了,以上基本的axios配置Content-Type的方法就講述到這里,歡迎大家提出更好的建議和指正其中的錯誤。

相關(guān)文章

  • Vue3.js自定義組件 v-model詳解

    Vue3.js自定義組件 v-model詳解

    在Vue3 中,v-model是用于創(chuàng)建雙向數(shù)據(jù)綁定的指令,通常,我們使用該指令將任何 HTML 表單元素與一個變量綁定以收集輸入值,本文給大家介紹Vue3.js自定義組件 v-model,感興趣的朋友一起看看吧
    2023-10-10
  • vue-cli腳手架的安裝教程圖解

    vue-cli腳手架的安裝教程圖解

    vue-cli腳手架模板是基于node下的npm來完成安裝,這篇文章主要介紹了vue-cli腳手架的安裝教程圖解 ,需要的朋友可以參考下
    2018-09-09
  • vue完成項(xiàng)目后,打包成靜態(tài)文件的方法

    vue完成項(xiàng)目后,打包成靜態(tài)文件的方法

    今天小編就為大家分享一篇vue完成項(xiàng)目后,打包成靜態(tài)文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • Vue3+@antv/g2plot 生成詞云圖的效果

    Vue3+@antv/g2plot 生成詞云圖的效果

    詞云圖是一種文本可視化技術(shù),用于展示文本數(shù)據(jù)中關(guān)鍵詞的頻次或重要性,文章介紹了如何在Vue3中使用@antv/g2plot生成詞云圖,并解釋了如何共享顏色和隨機(jī)生成顏色的組件,感興趣的朋友一起看看吧
    2024-12-12
  • vue項(xiàng)目中created()被調(diào)用多次的踩坑實(shí)戰(zhàn)

    vue項(xiàng)目中created()被調(diào)用多次的踩坑實(shí)戰(zhàn)

    在vue項(xiàng)目中我在created中調(diào)用了兩次get數(shù)據(jù)請求,所以下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目中created()被調(diào)用多次的踩坑實(shí)戰(zhàn),需要的朋友可以參考下
    2023-03-03
  • 詳解Vue.js分發(fā)之作用域槽

    詳解Vue.js分發(fā)之作用域槽

    本篇文章主要介紹了詳解Vue.js分發(fā)之作用域槽,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Vue中使用debugger在瀏覽器中不起作用的問題及解決

    Vue中使用debugger在瀏覽器中不起作用的問題及解決

    這篇文章主要介紹了Vue中使用debugger在瀏覽器中不起作用的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 手寫vue無限滾動指令的詳細(xì)過程

    手寫vue無限滾動指令的詳細(xì)過程

    今天在移動端項(xiàng)目中遇見一個需求,需要數(shù)據(jù)無限滾動,所以下面這篇文章主要給大家介紹了關(guān)于手寫vue無限滾動指令的詳細(xì)過程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Vue 固定頭 固定列 點(diǎn)擊表頭可排序的表格組件

    Vue 固定頭 固定列 點(diǎn)擊表頭可排序的表格組件

    這篇文章主要介紹了Vue 固定頭 固定列 點(diǎn)擊表頭可排序的表格組件的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • vue跨窗口通信之新窗口調(diào)用父窗口方法實(shí)例

    vue跨窗口通信之新窗口調(diào)用父窗口方法實(shí)例

    由于開發(fā)需要,我需要在登錄成功請求成功后,調(diào)用父窗口的一個點(diǎn)擊事件方法,這篇文章主要給大家介紹了關(guān)于vue跨窗口通信之新窗口調(diào)用父窗口的相關(guān)資料,需要的朋友可以參考下
    2023-01-01

最新評論