最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

axios中post請求json和application/x-www-form-urlencoded詳解

 更新時(shí)間:2022年10月20日 09:40:40   作者:牧羊狼  
Axios是專注于網(wǎng)絡(luò)數(shù)據(jù)請求的庫,相比于原生的XMLHttpRequest對象,axios簡單易用,下面這篇文章主要給大家介紹了關(guān)于axios中post請求json和application/x-www-form-urlencoded的相關(guān)資料,需要的朋友可以參考下

前言

前端向后端傳輸數(shù)據(jù)時(shí),如果是get傳輸,直接傳在url后;如果是post傳輸,則在請求體body中傳輸。

在body中的數(shù)據(jù)格式又有兩種,一種是  json  數(shù)據(jù)格式,另一種是 字符串。具體要用哪種格式取決于后端入?yún)⒌母袷健?/p>

如果后端接收json數(shù)據(jù)類型,post 的 headers 需要設(shè)置 { ‘content-type’: ’application/json’ },傳給后端的數(shù)據(jù)就形如  { ‘name’:’edward’, ‘age’:’25’ } 

如果后端接收的是(表單)字符串類型,post 的 headers 需設(shè)置  { ‘content-type’: ’application/x-www-form-urlencoded’ },

,傳輸給后端的數(shù)據(jù)就形如   ‘name=edward&age=25’  

qs   

qs.stringfy() 將對象序列化成URL的形式

axios默認(rèn)數(shù)據(jù)格式為json,所以:

1.當(dāng)后端需要接收json格式的數(shù)據(jù)時(shí),post請求頭不需要設(shè)置請求頭,數(shù)據(jù)格式也不需要我們?nèi)マD(zhuǎn)換(若數(shù)據(jù)已經(jīng)是json);

2.當(dāng)后端需要接收字符串格式的數(shù)據(jù)時(shí),我們需要給post請求頭設(shè)置{ ‘content-type’: ’application/x-www-form-urlencoded’ },

   這個(gè)時(shí)候如果我們傳的入?yún)⑹且粋€(gè) js 對象,這時(shí)候我們就需要用 qs 轉(zhuǎn)換數(shù)據(jù)格式,qs具體用法如下:

 安裝模塊:npm  i  qs  -S

import qs from 'qs';
const data = { name:'edward' , age:'25'};  // 我們傳的是 js 對象
const options = {
  method: 'POST',
  headers: { 'content-type': 'application/x-www-form-urlencoded' },
  data: qs.stringify(data),   // 用 qs 將js對象轉(zhuǎn)換為字符串 'name=edward&age=25'
  url: 'http://www.edward.com'
}; axios(options);

我們也可以在封裝axios的時(shí)候,給它全局設(shè)置qs 

axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

【區(qū)分】: JSON.stringfy()  和 qs.stringfy() 

  let  data = { name: 'edward', age: '25' }

  前者:JSON.stringfy(data)  //  ”{ 'name' : 'edward' , 'age' : '25' }”

  后者:qs.stringfy(data)  // 'name=edward&age=25'

【區(qū)分】:jQuery 中 $.ajax 的post請求  VS   axios的post 請求的 content-type 默認(rèn)值

  前者:"application/x-www-form-urlencoded"

  后者:"application/json"

$.ajax({
   type: 'POST',
   contentType: 'application/json;charset=utf-8', // 發(fā)送的數(shù)據(jù)類型
   dataType: 'json',   // 接收的數(shù)據(jù)類型
   url: 'http://www.edward.com',
   data: JSON.stringfy(formData),
   success: function (res) {
      console.log(res.data)
   }
}) 

contentType: 告訴服務(wù)器,我要發(fā)什么類型的數(shù)據(jù)

dataType:告訴服務(wù)器,我要想什么類型的數(shù)據(jù),如果沒有指定,那么會自動推斷是返回 XML,還是JSON,還是script,還是String。

注意 :$.ajax() post發(fā)送到服務(wù)器的數(shù)據(jù)。

將自動轉(zhuǎn)換為請求字符串格式。

如果為對象,如 { name: 'edward', age: '25' },jQuery 將自動轉(zhuǎn)化為 'name=edward&age=25'

如果為數(shù)組,jQuery 將自動為不同值對應(yīng)同一個(gè)名稱。如 {foo:["bar1", "bar2"]} 轉(zhuǎn)換為 '&foo=bar1&foo=bar2'。

總結(jié)

到此這篇關(guān)于axios中post請求json和application/x-www-form-urlencoded詳解的文章就介紹到這了,更多相關(guān)axios post請求json內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

连江县| 安平县| 白朗县| 临泽县| 巴里| 桑植县| 万载县| 陆良县| 瓮安县| 游戏| 汨罗市| 通化县| 会东县| 辉南县| 宜宾县| 崇文区| 五指山市| 福建省| 昔阳县| 宣恩县| 白银市| 平罗县| 文登市| 吴川市| 花莲市| 大厂| 大田县| 唐河县| 遂平县| 平顶山市| 侯马市| 祁门县| 锦州市| 敦化市| 禹州市| 望城县| 逊克县| 肃宁县| 横山县| 澄城县| 罗平县|