日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qs.stringify()详情

發布時間:2023/12/10 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qs.stringify()详情 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

qs是一個npm倉庫所管理的包,可通過npm install qs命令進行安裝(axios 自帶qs , // import qs from 'qs')

1、基本用法

  • qs.parse()將URL解析成對象的形式:

  • let url = 'user=wdx&pwd=123&appToken=7d22e38e-5717-11e7-907b-a6006ad3dba0' qs.parse(url) console.log(qs.parse(url)) // {user:'wdx',pwd:'123',appToken:'7d22e38e-5717-11e7-907b-a6006ad3dba0'}
  • qs.stringify()將對象 序列化成URL的形式,以&進行拼接

  • qs.stringify 是把一個參數對象格式化為一個字符串。

    let obj= {user:'wdx',pwd:'123',appToken:'7d22e38e-5717-11e7-907b-a6006ad3dba0' } qs.stringify(obj) console.log(qs.stringify(obj)) // 'user=wdx&pwd=123&appToken=7d22e38e-5717-11e7-907b-a6006ad3dba0'

    2、指定數組編碼格式

    那么當我們需要傳遞數組的時候,我們就可以通過下面方式進行處理: 默認情況下,它們給出明確的索引,如下代碼:

    qs.stringify({ a: ['b', 'c', 'd'] }); // 'a[0]=b&a[1]=c&a[2]=d'

    也可以進行重寫這種默認方式為false

    qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }); // 'a=b&a=c&a=d'

    當然,也可以通過arrayFormat 選項進行格式化輸出,如下代碼所示:

    // indices(默認) qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }) // 'a[0]=b&a[1]=c' qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }) // 'a[]=b&a[]=c' qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }) // 'a=b&a=c'

    在這里需要注意的是,JSON中同樣存在stringify方法,但是兩者之間的區別是很明顯的,如下所示:

    {"uid":"cs11","pwd":"000000als","username":"cs11","password":"000000als"} uid=cs11&pwd=000000als&username=cs11&password=000000als

    如上所示,前者是采用JSON.stringify(param)進行處理,后者是采用Qs.stringify(param)進行處理的。

    qs庫是用來發送formdata數據的,并且可以改變數據格式,同時他還可以去掉options預請求。

    3、處理json格式的參數

    在默認情況下,json格式的參數會用 [] 方式編碼,

    let json = { a: { b: { c: 'd', e: 'f' } } };qs.stringify(json); //結果 'a[b][c]=d&a[b][e]=f'

    但是某些服務端框架,并不能很好的處理這種格式,所以需要轉為下面的格式

    qs.stringify(json, {allowDots: true}); //結果 'a.b.c=d&a.b.e=f'

    qs.stringify詳解

    默認情況下,axios將JavaScript對象序列化為JSON。 要以application / x-www-form-urlencoded格式發送數據,您可以使用以下選項之一。

    const qs = require('qs'); axios.post('/foo', qs.stringify({ 'bar': 123 }));

    者以另一種方式(ES6)

    import qs from 'qs'; const data = { 'bar': 123 }; const options = {method: 'POST',headers: { 'content-type': 'application/x-www-form-urlencoded' },data: qs.stringify(data),url, }; axios(options);

    詳解: axios默認的content-type是application/json 也就是java后端經常讓你把參數放在body中的那種格式 傳輸的樣式是 requestbody

    {name:xxx,age:xxx }

    如果使用的qs進行序列化 那么content-type就是application/x-www-form-urlencoded 也就是常說的表單提交 傳輸的樣式是 formdata

    name:xxx, age:xxx

    urlencoding后是 name=xxx&age=xxx

    所以,實際上是否需要用qs去序列化參數完全取決于后端要怎么接受數據

    qs.stringify()與JSON.stringify()區別

    qs.stringify、JSON.stringify雖然都是序列化,但他倆卻不是一個東西。

    qs是nodejs的一個模塊

    JSON.stringify是js自帶的方法,是將json對象轉換為json字符串

    var a={"a1": "hello", "a2": "hi"} qs.stringify(a); // 結果是:a1=hello&a2=hi JSON.stringify(a); // 結果是:‘{"a1": "hello", "a2": "hi"}’

    總結

    以上是生活随笔為你收集整理的qs.stringify()详情的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。