您好,登錄后才能下訂單哦!
本篇內容介紹了“uni-app調取接口的方式及封裝uni.request()的方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
uni.request({ url:'/api/getIndexCarousel.jsp', method:'get', success:res=>{ console.log(res.data); this.carouselData = res.data } })
uni.request({ url:'/api/getIndexCarousel.jsp', method:'get', }).then((result)=>{ let [error,res] = result; //result將返回一個數組[error,{NativeData}] //NativeData:調取接口后返回的原生數據 if(res.statusCode === 200){ this.carouselData = res.data } if(res.statusCode === 404){ console.log('請求的接口沒有找到'); } })
async:用在函數定義的前面
async request(){ //函數體;}
await:用在標明了async關鍵字的函數內部,異步操作的前面。
onLoad() { this.request(); }, methods: { async request(){ let result = await uni.request({ url:'/api/getIndexCarousel.jsp' }) console.log(result) let [err,res] = result; if(res.statusCode === 200){ this.carouselData = res.data; } } }
新建@/common/request.js文件
初步寫法(僅供參考):
export default { request(options){ uni.request({ ...options, success:res=>{ console.log(res) } }) }, get(url,data={},options={}){ options.url=url, options.data=data, options.method='get', this.request(options) }, post(url,data={},options={}){ options.url=url, options.data=data, options.method='post', this.request(options) } }
二次更改:
export default{ //封裝uni.request(): request(options){ return new Promise((resolve,reject)=>{ //書寫異步操作的代碼 uni.request({ ...options, success:res=>{ if(options.native){ resolve(res) //調取接口后返回的原生數據 } if(res.statusCode === 200){ resolve(res.data) //異步操作執行成功 }else{ console.log('請求的接口沒有找到'); reject(res) //異步操作執行失敗 } } }) }) }, get(url,data={},options={}){ options.url=url; options.data=data; options.method='get'; return this.request(options) }, post(url,data={},options={}){ options.url=url; options.data=data; options.method='post'; return this.request(options) } }
import request from '@/common/request.js'; Vue.prototype.$Z = request;
例:在任意文件中書寫下列代碼可以調用。this.$Z.get();
//封裝uni.request(): this.$Z.get('/api/getIndexCarousel.jsp',{},{ native:false }).then(res=>{ //異步操作成功 console.log(res) }).catch(res=>{ //異步操作失敗 console.log(res) }).finally(res=>{ //異步操作完成 });
uniapp的網絡請求方法
uni.request({ url: 'https://www.example.com/request', //僅為示例,并非真實接口地址。 data: { name: 'name', age: 18 }, header: { 'custom-header': 'hello' //自定義請求頭信息 }, success: function (res) { console.log(res.data); } });
uniapp網絡請求的get和post
對于 GET 方法,會將數據轉換為 query string。例如 { name: ‘name’, age: 18 } 轉換后的結果是 name=name&age=18。
對于 POST 方法且 header[‘content-type’] 為 application/json 的數據,會進行 JSON 序列化。
對于 POST 方法且 header[‘content-type’] 為 application/x-www-form-urlencoded 的數據,會將數據轉換為 query string。
請求的 header 中 content-type 默認為 application/json
注意 post請求必須加header[‘content-type’]
我們知道一個項目中對于前期架構的搭建工作對于后期的制作有多么重要,所以不管做什么項目我們拿到需求后一定要認真的分析一下,要和產品以及后臺溝通好,其中尤為重要的一個環節莫過于封裝接口請求了。因為前期封裝好了,后面我們真的可以實現粘貼復制了。所以今天給大家分享一個在uni-app中如何封裝一個request請求。
const config = { base_url: '這里可以是生產環境或者測試環境' } export { config }
這里主要配置接口的基本路徑
import { config } from '../config.js' export const apiResquest = (prams) => { //prams 為我們需要調用的接口API的參數 下面會貼具體代碼 // 判斷請求類型 let headerData = { 'content-type': 'application/json' } let dataObj = null //因為我們的GET和POST請求結構不同這里我們做處理,大家根據自己后臺接口所需結構靈活做調整吧 if (prams.method === "GET") { headerData = { 'content-type': 'application/json', 'token': uni.getStorageSync('token') } } else { dataObj = { 'data': prams.query, 'token': uni.getStorageSync('token') } } return new Promise((resolve, reject) => { let url = config.base_url + prams.url; //請求的網絡地址和局地的api地址組合 uni.showLoading({ title: '加載中', mask: true }) return uni.request({ url: url, data: dataObj, method: prams.method, header: headerData, success: (res) => { uni.hideLoading() //這里是成功的返回碼,大家根據自己的實際情況調整 if (res.data.code !== '00000') { uni.showToast({ title: '獲取數據失敗:' + res.data.msg, duration: 1000, icon: "none" }) return; } resolve(res.data); console.log(res.data) }, fail: (err) => { reject(err); console.log(err) uni.hideLoading() }, complete: () => { console.log('請求完成') uni.hideLoading() } }); }) }
——-??注意: 這里可以根據自己的項目功能需求分解models 層——-
import { apiResquest } from '../utils/http.js' //POST 請求案例 export const login = (query) => { return apiResquest({ url: '這里是API的地址', method: 'POST', query: {...query} }) } //GET 請求案例可以傳遞參數也可以不傳遞 export const validateCode = (query) => { let str = query return apiResquest({ url: `您的API地址 ?${str}`, method: 'GET' }) }
import { login } from '../../models/index.js' //頁面中的 methods 里面就可以直接調用了 Login(){ //這里可以設置需要傳遞的參數 let uid = uni.getStorageSync('userId') login(uid).then((res) => { console.log(res) }).catch(err => { console.log(err) }) }
“uni-app調取接口的方式及封裝uni.request()的方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。