第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

網(wǎng)絡(luò)請求

1. 前言

當(dāng)用戶在瀏覽器的地址欄輸入我們的項(xiàng)目網(wǎng)址,點(diǎn)擊回車后,瀏覽器就會(huì)發(fā)送網(wǎng)絡(luò)請求,經(jīng)過一系列操作后,瀏覽器會(huì)顯示出項(xiàng)目的頁面。那這個(gè)網(wǎng)絡(luò)請求過程中間經(jīng)歷了什么呢?這一小節(jié)我們就來詳細(xì)剖析一下。

本小節(jié)我們將學(xué)習(xí):網(wǎng)絡(luò)請求的過程是怎樣經(jīng)歷的、uniapp 發(fā)起網(wǎng)絡(luò)請求的應(yīng)用實(shí)例、網(wǎng)絡(luò)請求返回?cái)?shù)據(jù)的處理。

網(wǎng)絡(luò)請求實(shí)例的內(nèi)容最好在實(shí)際項(xiàng)目中去應(yīng)用實(shí)踐,網(wǎng)絡(luò)請求在實(shí)際開發(fā)中很容易出現(xiàn)問題。比如有時(shí)明明請求發(fā)送成功了,卻沒有返回想要的頁面數(shù)據(jù),這些都需要我們在項(xiàng)目開發(fā)過程中多多練習(xí)積累經(jīng)驗(yàn)。

2. 網(wǎng)絡(luò)請求過程

在我們從發(fā)送網(wǎng)絡(luò)情況到顯示網(wǎng)頁的這個(gè)過程中,系統(tǒng)主要進(jìn)行了下面幾步操作:
(1)進(jìn)行域名解析:系統(tǒng)會(huì)根據(jù)域名找到服務(wù)器的IP地址;
(2)建立TCP連接:確保數(shù)據(jù)可以有效的傳輸;
(3)客戶端發(fā)起 HTTP 請求:TCP建立連接后,客戶端才會(huì)正式發(fā)起 HTTP 請求,帶著請求數(shù)據(jù)發(fā)給服務(wù)器;
(4)服務(wù)器響應(yīng)HTTP請求:服務(wù)器會(huì)接收并處理上一步從客戶端發(fā)過來的數(shù)據(jù),不管是否處理成功,都會(huì)返回一個(gè)響應(yīng)消息給客戶端,包括 HTML 文件或者其他格式的數(shù)據(jù),還有響應(yīng)狀態(tài)碼等,響應(yīng)狀態(tài)碼是判斷我們是否請求成功最直觀的數(shù)據(jù),我們最常見的有200 OK請求成功、404 Not Found 請求失敗。
(5)瀏覽器解析 HTML 文件:瀏覽器拿到html文件后,就會(huì)開始解析并渲染其中的html代碼,將相應(yīng)的頁面顯示給用戶。

3. uni.request API參數(shù)

uni-app 框架給我們提供了豐富的 API,我們可以直接調(diào)用來進(jìn)行網(wǎng)絡(luò)請求。最常用到的是 uni.request 方法,這一小節(jié)我們來看看 uni.request 的 API 參數(shù)。

大家要注意區(qū)分網(wǎng)絡(luò)請求與路由跳轉(zhuǎn),網(wǎng)絡(luò)請求是請求項(xiàng)目外部的地址,而路由跳轉(zhuǎn)是跳轉(zhuǎn)到項(xiàng)目內(nèi)部的頁面。

在日常開發(fā)中,我們經(jīng)常用到的是 get 和 post 網(wǎng)絡(luò)請求,在 uni-app 中都是調(diào)用 uni.request API實(shí)現(xiàn)的,下面我們來演示一下。

參數(shù)名 類型 默認(rèn)值 說明
url String 要請求的服務(wù)器地址、域名
data Object/String/ArrayBuffer 請求時(shí)要傳遞的參數(shù)
header Object 請求的 header,header 中不能設(shè)置 Referer
method String GET 有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT(必須為大寫)
timeout Number 30000 超時(shí)時(shí)間,單位 ms
dataType String json 如果值為 json,會(huì)嘗試對返回的數(shù)據(jù)做一次 JSON.parse
responseType String text 設(shè)置響應(yīng)的數(shù)據(jù)類型。合法值:text、arraybuffer
success Function 請求服務(wù)器成功返回的回調(diào)數(shù)據(jù)
fail Function 請求服務(wù)器失敗返回的回調(diào)數(shù)據(jù)
complete Function 請求服務(wù)器成功、失敗都會(huì)返回回調(diào)數(shù)據(jù)

Tips

  • 上面的列出的參數(shù)只有 url 是必填項(xiàng),其他都是選填項(xiàng)。
  • 在小程序中網(wǎng)絡(luò)相關(guān)的 API 在使用前需要配置域名白名單。

4. 發(fā)送網(wǎng)絡(luò)請求

上面列出的參數(shù)有很多,但是大多數(shù)我們實(shí)際開發(fā)項(xiàng)目用不到,經(jīng)常用到的大多是 url、data、method、success 這幾個(gè)參數(shù)。

4.1 實(shí)例

<template>
    <view>
        <button @click="sendGet">發(fā)送請求</button>
    </view>
</template>

<script>
	export default {
	    methods: {
	        sendGet () {
	            uni.request({
					//示例地址,非真實(shí)地址
	                url: 'http://localhost:8080/api/getData',
					//必須為大寫,默認(rèn)值為GET,GET請求可以不寫此參數(shù)
					method:'GET',
					data:{
					   openId:"4a96efrtgyt56Q89jiyth"
					},
	                success(res) {
	                  console.log(res)
	                }
	            })
	        }
	    }
	}
</script>

4.2 data 參數(shù)說明

data參數(shù)是支持對象 Object、字符串 String 類型的,但不管我們傳入什么類型,最終都會(huì)被轉(zhuǎn)換成 String 類型。轉(zhuǎn)換規(guī)則如下:

get 方法:如果 data 參數(shù)是 { name: 'imooc', age: 18 } ,轉(zhuǎn)換后的結(jié)果是 name=imooc&age=18。

post 方法:如果 header['content-type']application/json 的數(shù)據(jù),會(huì)進(jìn)行 JSON 序列化。
如果 header['content-type']application/x-www-form-urlencoded 的數(shù)據(jù),會(huì)將數(shù)據(jù)轉(zhuǎn)換為 query string。
實(shí)例:

uni.request({
	url: '請求地址',
	header: {
		//data 會(huì) JSON 序列化
	    'Content-Type': 'application/json;charset=UTF-8',
		//data 會(huì)被轉(zhuǎn)為 query string
	    'Content-Type': 'application/x-www-form-urlencoded',
	},
	data:{
	   openId:"4a96efrtgyt56Q89jiyth"
	},
    success(res) {
      console.log('服務(wù)器返回的信息:',res)
    }
})

4.3 success 返回參數(shù)說明

參數(shù) 類型 說明
data Object/String/ArrayBuffer 服務(wù)器返回的數(shù)據(jù)
statusCode Number 服務(wù)器返回的 HTTP 狀態(tài)碼
header Object 服務(wù)器返回的 HTTP Response Header
cookies Array. 服務(wù)器返回的 cookies,格式為字符串?dāng)?shù)組

上面我們在 success 參數(shù)中打印了返回的數(shù)據(jù)。

success(res) {
  console.log('服務(wù)器返回的信息:',res)
}

打印信息格式如下:

{
  "data":"{"id":1,"name": "imooc"}",
  "header": {
    "Server": "nginx/1.14.0",
    "Date": "Thu, 10 Apr 2020 03:08:20 GMT",
    "Content-Type": "application/json;charset=utf-8;",
    "Transfer-Encoding": "chunked",
    "Connection": "keep-alive"
  },
  "statusCode": 200,
  "cookies": [],
  "errMsg": "request:ok"
}

statusCode 為 200,說明請求成功了,后面我們再處理從服務(wù)器傳回來的 data 信息就可以了。

5. 小結(jié)

本節(jié)課程我們主要學(xué)習(xí)了 uni-app 的網(wǎng)絡(luò)請求,直接調(diào)用 uni.request 這個(gè) API 就可以實(shí)現(xiàn)我們經(jīng)常用到的 get、post 請求。本節(jié)課程的重點(diǎn)如下:

  • 掌握怎樣發(fā)送 get 請求,經(jīng)常用到的幾個(gè)參數(shù)要熟練;
  • data 參數(shù)類型在 get 方法、post 方法請求情況下的不同轉(zhuǎn)換;
  • success 返回參數(shù)的格式,以及每個(gè)參數(shù)代表的含義。