国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【小程序】網(wǎng)絡(luò)請(qǐng)求API介紹及網(wǎng)絡(luò)請(qǐng)求的封裝

這篇具有很好參考價(jià)值的文章主要介紹了【小程序】網(wǎng)絡(luò)請(qǐng)求API介紹及網(wǎng)絡(luò)請(qǐng)求的封裝。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

網(wǎng)絡(luò)請(qǐng)求基本演練和封裝

網(wǎng)絡(luò)請(qǐng)求基本演練

微信提供了專屬的API接口,用于網(wǎng)絡(luò)請(qǐng)求: wx.request(Object object)

屬性 類型 默認(rèn)值 必填 說(shuō)明
url string 開發(fā)者服務(wù)器接口地址
data string/object/ArrayBuffer 請(qǐng)求的參數(shù)
header Object 設(shè)置請(qǐng)求的 header,header 中不能設(shè)置 Referer。 content-type 默認(rèn)為 application/json
timeout number 超時(shí)時(shí)間,單位為毫秒。默認(rèn)值為 60000
method string GET HTTP 請(qǐng)求方法
dataType string json 返回的數(shù)據(jù)格式
responseType string text 響應(yīng)的數(shù)據(jù)類型

上面眾多屬性中比較關(guān)鍵的幾個(gè)屬性如下:

url: 必傳, 不然請(qǐng)求什么.

data: 請(qǐng)求參數(shù)

method: 請(qǐng)求的方式

success: 成功時(shí)的回調(diào)

fail: 失敗時(shí)的回調(diào)

網(wǎng)絡(luò)請(qǐng)求API基本演練

一般我們都是在頁(yè)面的onLoad生命周期中發(fā)送網(wǎng)絡(luò)請(qǐng)求

直接通過(guò)wx.request(Object object)發(fā)送無(wú)參數(shù)GET請(qǐng)求:

Page({
	data: {
		allCities: {}
	},
  // onLoad生命周期發(fā)送網(wǎng)絡(luò)請(qǐng)求
	onLoad() {
		wx.request({
			// 發(fā)送網(wǎng)絡(luò)請(qǐng)求的地址
			url: "http://123.207.32.32:1888/api/city/all",
			// 拿到請(qǐng)求的結(jié)果
			success: (res) => {
				// 將獲取的結(jié)果保存到data中
				const data = res.data.data
				this.setData({
					allCities: data
				})
			},
			// 拿到錯(cuò)誤信息
			fail: (err) => {
				console.log(err);
			}
		})
	}
})

直接通過(guò)wx.request(Object object)發(fā)送有參數(shù)GET請(qǐng)求:

Page({
	onLoad() {
		wx.request({
			url: 'http://123.207.32.32:1888/api/home/houselist',
			// 無(wú)論是POST請(qǐng)求還是GET請(qǐng)求, 參數(shù)都是在data中傳遞
			data: {
				page: 1
			},
			success: (res) => {
				console.log(res);
			},
			fail: (err) =>{
				console.log(err);
			}
		})
	}
})

網(wǎng)絡(luò)請(qǐng)求配置域名

每個(gè)微信小程序需要事先設(shè)置通訊域名,小程序只可以跟指定的域名進(jìn)行網(wǎng)絡(luò)通信。

小程序登錄后臺(tái) – 開發(fā)管理 – 開發(fā)設(shè)置 – 服務(wù)器域名;

服務(wù)器域名請(qǐng)?jiān)?「小程序后臺(tái) - 開發(fā) - 開發(fā)設(shè)置 - 服務(wù)器域名」 中進(jìn)行配置,配置時(shí)需要注意

域名只支持 https (wx.request、 wx.uploadFile、 wx.downloadFile) 和 wss (wx.connectSocket) 協(xié)議;

域名不能使用 IP 地址(小程序的局域網(wǎng) IP 除外)或 localhost;

可以配置端口,如 https://myserver.com:8080,但是配置后只能向 https://myserver.com:8080 發(fā)起請(qǐng)求。如果向https://myserver.com、 https://myserver.com:9091 等 URL 請(qǐng)求則會(huì)失敗。

如果不配置端口。如 https://myserver.com,那么請(qǐng)求的 URL 中也不能包含端口,甚至是默認(rèn)的 443 端口也不可以。如果 向 https://myserver.com:443 請(qǐng)求則會(huì)失敗。

域名必須經(jīng)過(guò) ICP 備案;

出于安全考慮, api.weixin.qq.com 不能被配置為服務(wù)器域名,相關(guān) API 也不能在小程序內(nèi)調(diào)用。 開發(fā)者應(yīng)將 AppSecret 保存到后臺(tái)服務(wù)器中,通過(guò)服務(wù)器使用 getAccessToken 接口獲取 access_token,并調(diào)用相關(guān) API;

不支持配置父域名,使用子域名。


網(wǎng)絡(luò)請(qǐng)求的封裝

小程序提供的網(wǎng)絡(luò)請(qǐng)求用起來(lái)是很繁瑣的, 并且容易產(chǎn)生回調(diào)地獄, 因此我們通常會(huì)對(duì)小程序的網(wǎng)絡(luò)請(qǐng)求進(jìn)行封裝

封裝網(wǎng)絡(luò)請(qǐng)求有兩個(gè)思路:

思路一: 封裝成一個(gè)函數(shù)

export function yqRequest(options) {
	return new Promise((resolve, reject) => {
		wx.request({ 
			...options,
			success: (res) => {
				resolve()
			},
			fail: reject
		 })
	})
}
  • 這樣我們發(fā)送網(wǎng)絡(luò)請(qǐng)求就可以使用該函數(shù), 使用該函數(shù)發(fā)送網(wǎng)絡(luò)請(qǐng)求就可以通過(guò)Promise或者async和await獲取結(jié)果
import { yqRequest } from "../../service/index"

Page({
	onLoad() {
		// 通過(guò)Promise獲取結(jié)果
		yqRequest({
			url: "http://123.207.32.32:1888/api/city/all"
		}).then(res => {
			console.log(res);
		})

		yqRequest({
			url: 'http://123.207.32.32:1888/api/home/houselist',
			data: {
				page: 1
			}
		}).then(res => {
			console.log(res);
		})
	}
})
import { yqRequest } from "../../service/index"

Page({
	onLoad() {
		// 此處調(diào)用封裝的異步函數(shù)
		this.getCityData()
		this.getHouseListData()
	},

	// 使用async和await獲取結(jié)果, 為了防止同步最好再封裝成獨(dú)立方法
	async getCityData() {
		const cityData = await yqRequest({
			url: "http://123.207.32.32:1888/api/city/all"
		})
		console.log(cityData);
	},
	async getHouseListData() {
		const houseListData = await yqRequest({
			url: 'http://123.207.32.32:1888/api/home/houselist',
			data: {
				page: 1
			}
		})
		console.log(houseListData);
	}
})

思路一: 封裝成類(封裝成類具備更強(qiáng)的擴(kuò)展性)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-408148.html

// 網(wǎng)絡(luò)請(qǐng)求封裝成類
class YQRequest {
	// 傳入配置的baseurl
	constructor(baseUrl) {
		this.baseUrl = baseUrl
	}

	request(options) {
		const { url } = options
		return new Promise((resolve, reject) => {
			wx.request({ 
				...options,
				url: this.baseUrl + url,
				success: (res) => {
					resolve(res)
				},
				fail: reject
			})
		})
	}

	get(options) {
		return this.request({ ...options, method: "get" })
	}

	post(options) {
		return this.request({ ...options, method: "post" })
	}
}

export const yqRequest = new YQRequest("http://123.207.32.32:1888/api")
  • 使用類的實(shí)例發(fā)送網(wǎng)絡(luò)請(qǐng)求同樣可以通過(guò)Promise或者async和await獲取結(jié)果(這里不再演示async和await了)
import { yqRequest } from "../../service/index"

Page({
	onLoad() {
		// 使用類的實(shí)例發(fā)送網(wǎng)絡(luò)請(qǐng)求
		yqRequest.request({
			url: "/city/all"
		}).then(res => {
			console.log(res);
		})

		yqRequest.get({
			url: '/home/houselist',
			data: {
				page: 1
			}
		}).then(res => {
			console.log(res);
		})
	}
})

到了這里,關(guān)于【小程序】網(wǎng)絡(luò)請(qǐng)求API介紹及網(wǎng)絡(luò)請(qǐng)求的封裝的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微信小程序基于Promise封裝發(fā)起網(wǎng)絡(luò)請(qǐng)求
  • 微信小程序封裝網(wǎng)絡(luò)請(qǐng)求設(shè)置超時(shí)5min不生效

    背景: 開發(fā)微信小程序時(shí),由于有些業(yè)務(wù)場(chǎng)景特殊,接口返回時(shí)間較長(zhǎng),因此使用flyio封裝網(wǎng)絡(luò)請(qǐng)求時(shí)將timeout設(shè)置為5min。 問題: 設(shè)置timeout為5min,發(fā)現(xiàn)請(qǐng)求時(shí)長(zhǎng)超過(guò)1min后請(qǐng)求自動(dòng)斷開了。 解決方案: 除了在網(wǎng)絡(luò)請(qǐng)求那設(shè)置,還需要在app.json中設(shè)置networkTimeout中的request屬性

    2024年01月17日
    瀏覽(29)
  • uniapp封裝一個(gè)網(wǎng)絡(luò)請(qǐng)求的服務(wù),包括攔截器,請(qǐng)求頭等,適用于抖音小程序,各種小程序。

    今天用uniapp寫抖音小程序的時(shí)候,發(fā)現(xiàn)抖音小程序不支持axios(也許是我不會(huì)玩哈),那使用uniapp提供的請(qǐng)求方式總是可以的,畢竟uniapp對(duì)于小程序的友好度那是真沒的說(shuō)呀。那每個(gè)請(qǐng)求都寫一套請(qǐng)求代碼也太麻煩了,封裝一個(gè)服務(wù)吧。直接上代碼,我們把下面這個(gè)文件叫做

    2024年02月07日
    瀏覽(19)
  • uniapp及微信小程序封裝全局網(wǎng)絡(luò)請(qǐng)求,彈框和hint提示

    今天分享一下uniapp項(xiàng)目的網(wǎng)絡(luò)請(qǐng)求如何封裝,不知道大家開發(fā)微信小程序項(xiàng)目是用什么開發(fā)工具,我個(gè)人更喜歡用uniapp,無(wú)論是從項(xiàng)目擴(kuò)展方向還是開發(fā)效率來(lái)說(shuō),uniapp都是首選。 1:創(chuàng)建一個(gè)項(xiàng)目工具庫(kù),http.js 在vite.config.js文件中配置跨域 這樣,一個(gè)全局網(wǎng)絡(luò)請(qǐng)求工具就完

    2024年02月06日
    瀏覽(18)
  • uniapp微信小程序封裝網(wǎng)絡(luò)請(qǐng)求 @escook/request-miniprogram

    uniapp微信小程序封裝網(wǎng)絡(luò)請(qǐng)求 @escook/request-miniprogram

    官網(wǎng)地址:https://www.npmjs.com/package/@escook/request-miniprogram 1、下載依賴 2、引入 把下面代碼放到 main.js 3、發(fā)起請(qǐng)求 4、請(qǐng)求成功 可以看到請(qǐng)求成功了,并執(zhí)行了登入成功的邏輯。 每次發(fā)起請(qǐng)求后,都要自己寫if語(yǔ)句判斷請(qǐng)求是否成功,非常麻煩。我們可以修改一下源碼解決這個(gè)

    2024年02月10日
    瀏覽(22)
  • uniapp api請(qǐng)求接口 封裝

    2024年02月12日
    瀏覽(20)
  • 09-微信小程序 網(wǎng)絡(luò)請(qǐng)求API(實(shí)現(xiàn)輪播廣告和簡(jiǎn)易的聊天窗口)

    09-微信小程序 網(wǎng)絡(luò)請(qǐng)求API(實(shí)現(xiàn)輪播廣告和簡(jiǎn)易的聊天窗口)

    09-微信小程序API網(wǎng)絡(luò)請(qǐng)求(實(shí)現(xiàn)輪播廣告和簡(jiǎn)易的聊天窗口) 做項(xiàng)目的開發(fā),一定離不開網(wǎng)絡(luò)相關(guān)的操作,小程序做的都是客戶端,客戶端請(qǐng)求服務(wù)端做一些交互。 微信小程序提供的API的方式,通過(guò)API的方式可以調(diào)用微信提供的強(qiáng)大的功能,以增強(qiáng)小程序的功能,如:網(wǎng)絡(luò)請(qǐng)

    2024年02月11日
    瀏覽(24)
  • uniapp接口請(qǐng)求api封裝,規(guī)范化調(diào)用

    uniapp接口請(qǐng)求api封裝,規(guī)范化調(diào)用

    封裝規(guī)范和vue中的差不多,都是統(tǒng)一封裝成一個(gè)request對(duì)象,然后在api.js里面調(diào)用。 先創(chuàng)建一個(gè)utils文件夾,然后里面創(chuàng)建一個(gè)request.js,代碼如下: 在api文件夾中封裝對(duì)應(yīng)的index.js文件,然后導(dǎo)入request對(duì)象: 在對(duì)應(yīng)的vue或者react中引入并調(diào)用:

    2024年02月08日
    瀏覽(21)
  • UniApp實(shí)現(xiàn)API接口封裝與請(qǐng)求方法的設(shè)計(jì)與開發(fā)方法

    UniApp實(shí)現(xiàn)API接口封裝與請(qǐng)求方法的設(shè)計(jì)與開發(fā)方法 導(dǎo)語(yǔ):UniApp是一個(gè)基于Vue.js的跨平臺(tái)開發(fā)框架,可以同時(shí)開發(fā)iOS、Android和H5應(yīng)用。在UniApp中,實(shí)現(xiàn)API接口封裝與請(qǐng)求方法的設(shè)計(jì)與開發(fā)是一個(gè)十分重要的部分。本文將介紹如何使用UniApp實(shí)現(xiàn)API接口封裝與請(qǐng)求方法的設(shè)計(jì)與開發(fā)

    2024年02月15日
    瀏覽(17)
  • uni-app 使用uni.request封裝發(fā)送api請(qǐng)求文檔服務(wù)器請(qǐng)求導(dǎo)航守衛(wèi)

    前言 剛剛接觸uni-app時(shí)候想著直接使用axios發(fā)請(qǐng)求,可以發(fā)送成功但是請(qǐng)求頭有點(diǎn)問題 后面發(fā)現(xiàn)教程都是使用@escookrequest-miniprogram三方包發(fā)送請(qǐng)求-(瀏覽器環(huán)境發(fā)送不了請(qǐng)求,不兼容) 為什么不直接用uni.request()發(fā)送請(qǐng)求,是因?yàn)槊看握?qǐng)求都要寫一次添加請(qǐng)求頭不合理 后面

    2024年02月16日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包