鍍金池/ 問答/HTML/ axios到底哪里好

axios到底哪里好

最近嘗試vue, 使用 axios 發(fā)送 post 請求 :

axios Example 里面是這樣的:

// Performing a POST request

axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

下面的例子也不行

// Send a POST request
axios({
  method: 'post',
  url: '/user/12345',
  data: {
    firstName: 'Fred',
    lastName: 'Flintstone'
  }
});

上面的官方代碼我怎么嘗試都行不通, 不管怎樣, 發(fā)送的都不是 post, 而是 options
我在網(wǎng)上查看了一些解決方法,比如說使用兼容度并不怎么好的 URLSearchParams 和 引入 qs , 或者直接 JSON.stringify, 但是發(fā)送過去的數(shù)據(jù)就是純字符串了,后端收到還需要轉(zhuǎn)一下才能用,為什么不按照常規(guī)的方式來發(fā)送數(shù)據(jù),就像 jQueryajax 方法一樣。
那么問題來了, 我真的有必要為了發(fā)送 post 請求而使用兼容并不好的 URLSearchParams 或者為此引入一個 qs 庫么?axios 到底有哪里好? 為什么官方的例子卻行不通?

回答
編輯回答
枕頭人

...。
這里的options應(yīng)該是跨域(復(fù)雜跨域請求)的預(yù)先請求,用來確定有沒有跨域權(quán)限。
你拿jquery.ajax發(fā)跨域請求,也會有一個options請求。
vue,axios沒有關(guān)系。
vue,axios沒有關(guān)系。
vue,axios沒有關(guān)系。


qs轉(zhuǎn)參數(shù)是因為axios默認(rèn)支持application/json請求頭與json數(shù)據(jù)格式。
使用其他請求頭和form-data的數(shù)據(jù)格式需要手動設(shè)置請求頭和qs轉(zhuǎn)換格式。


qs是用來做序列化的,JSON.stringify也是做序列化處理的,但你要知道他們序列化的結(jié)果是不一樣的。

var a = {b:1,c:2}
qs-->"b=1&c=2"(這個叫query字符串嗎)
JSON.stringify: {"b":1,"c":2}(json字符串)
2018年3月11日 02:19
編輯回答
做不到

options請求并不任何ajax庫(axios 或者 jQuery ajax)發(fā)送的,而是瀏覽器自動發(fā)送的。這是一種跨域請求的機制,大多數(shù)瀏覽器都有這個機制。如果你在nodejs里發(fā)送POST請求,就不會帶有options請求。

2017年1月31日 00:39
編輯回答
孤星

你如果只是單純的發(fā)送一個post請求,你可以用你覺得怎樣方便,怎樣寫的形式實現(xiàn)。
如果你項目比較大,比較復(fù)雜,需要對系統(tǒng)中大多數(shù)請求發(fā)送前添加heder,對返回結(jié)果做統(tǒng)一的報錯處理,用axios會比較方便,你覺得難用,僅僅是你目前暫時還不會用而已,而不是它真的難用。
我覺得你需要了解下
application/x-www-form-urlencoded
application/json
text/xml
這幾種的區(qū)別,以及http請求中Content-Type所代表的含義

2017年4月9日 14:19
編輯回答
朕略萌

謝邀!
個人認(rèn)為有這么幾個好處:
1、官方推薦,持續(xù)維護。vue-resource已經(jīng)不再繼續(xù)更新維護了
2、兼容性也挺好,有插件能往下支持,qs是用來處理數(shù)據(jù)的,就像原生的JSON.stringify之類的
3、Vue發(fā)送請求之前都會發(fā)送一次option請求,這個通過之后才會發(fā)送真正的請求
4、可以封裝請求、配置基本參數(shù),擁有攔截器等等

目前想起來的就這些了,希望能對你有所幫助!

2017年11月25日 09:15
編輯回答
擱淺

贊同 @toBeTheLight 說的,有些人答的都是什么鬼,不是沒答到點子上就是前端文盲式的亂答,連"Vue請求之前都會發(fā)送一次options請求"都出來了。
建議答題前先提高下跨域的姿勢水平。

具體可查閱
HTTP訪問控制

2017年10月12日 20:56