ajax封裝
在src下建立資料夾,如uilts資料夾
建立request.js檔案。用於封裝ajax請求
request.js**如下:
export
default
function
(url
,data=,
method
="get")}
)}
函式裡面的形參各表示:
url : 將被呼叫的url形參,
data:需要傳入引數的形參(為什麼傳入的是乙個空物件呢?原因:是因為在呼叫介面時,某些介面是不需要傳入引數的),
method:請求的方法。預設為get請求
假設有index.vue的元件發請求時如下:
1.
引入封裝ajax請求的檔案
import
request
from
'@/request.js';/
/引入檔案路徑按封裝的請求檔案路徑而定,此處為演示
export
default
(data()
},methods:
})
這裡有個小問題,當我發起請求的時候,雖然已經拿到了資料,但是需要返回乙個結果,將結果給到data的imagelist資料,實現渲染
修改**如下:
request.js
export
default
function
(url
,data=,
methods
='get'),
fail:
(error)=
>})
})}
index.vue
import
request
from
'@/request.js'
export
default
(methods:},
//獲取詳情介面//
由於封裝好的請求是通過返回promise物件的形式//
那麼在請求介面的時候可以考慮使用async
/await來執行非同步請求操作//
async代表的是可執行的非同步函式
async
getdetail()
})
優化目的
async
getdetail()
//由於url看起來過長,並且當埠,網域名稱,協議這些是固定的時候,可以簡寫如下
request
('/getdeatail'
,data)/
/那麼需要怎麼簡寫成以上的請求呢?
優化方法
在src -> uilts資料夾建立config.js,將埠,網域名稱,協議暴露出來
export
default
引入config.js檔案
import
config
from
'./config.js'
export
default
function
(url
,data=,
methods
='get'),
fail:
(error)=
>})
})}
index.vue
import
request
from
'@/request.js'
export
default
(methods:},
async
getdetail()
})
為什麼要將埠,網域名稱,協議單獨寫在乙個檔案裡面呢?
原因:如果埠,協議,網域名稱需要修改時,在request.js視為單純的ajax請求的函式,最好是什麼都不要去修改它。盡可能的降低耦合度。那麼需要修改的埠,網域名稱以及協議單獨的拿出來寫在這個config.js檔案裡面。當檔案裡發生改變時,則會動態修改request.js裡面的url
node介面測試封裝是否成功
[,,
,,,,
,,]
在test_server資料夾下建立server.js檔案,配置介面
**如下:
//
引入koa框架以及路由
letkoa
=require
('koa');
letkoarouter
=require
('koa-router');
//生成應用以及路由例項
const
=new
koa();
const
router
=new
koarouter()
;//核心**//
測試介面
router
.get
('/',(
ctx,
next)=
>)/
/介面letdatas
=require
('./datas/data.json')/
/引入的json檔案按自己實際建立的檔案路徑位置為準,此處為演示
router
.get
('/getdetail',(
ctx,
next)=
>)/
/使用路由器以及路由
.use
(router
.routes()
);//
宣告使用路由
.use
(router
.allowedmethods()
);//
允許使用路由的方法//
監聽埠
.listen
('3000',(
)=>
)
最後開啟伺服器視窗,執行node server.js命令,將url輸入到瀏覽器。如下
123//req後面是需要傳入引數
uniapp封裝網路請求
在專案下新建utils資料夾,已有則不用新建,在utils資料夾下新建http.js檔案 得到傳來的引數 用params來接收,接下來先定義幾個會用到的東西 header有就傳 沒有就為空 data也是 有就傳 沒有就為空 因為get請求可以不用header 也可以不用data 請求方式不同 有ge...
uniapp雲開發請求封裝
雲開發中請求中對於對多個雲函式的大段重複邏輯,還是很有必要封裝一下的 大概這樣的目錄 apis 目錄 2 file 批量引入檔案 const requestapi require.context apis false,js let modules requestapi.keys foreach ke...
uni app封裝網路請求promise
在專案的根目錄下,建立http資料夾。然後在建立request.js檔案 檔案 如下 export function apiapi myurl,myget,mydata,tou accept text plain 引數 header 成功使用resolve success res 失敗呼叫rejec...