主頁 > 企業開發 > Vue 利用后端的資料字典和Map物件實作表格列欄位動態轉義的處理方案

Vue 利用后端的資料字典和Map物件實作表格列欄位動態轉義的處理方案

2021-07-05 06:20:28 企業開發

1、前言

??Vue中,使用el-table組件,經常遇到列欄位轉義的問題,常規處理方法有以下兩種:

  • 方法1:在模板中使用v-if,直接轉義,如:
          <el-table-column label="是否學員" prop="isStudent" min-width="7%">
            <template slot-scope="scope">
               <span v-if="scope.row.participantType == 0">N</span>
               <span v-if="scope.row.participantType == 1">Y</span>
            </template>            
          </el-table-column>
  • 方法2:使用formatter,進行轉義處理,如:

??在模板中指明使用格式轉換器:

<el-table-column label="證件型別" prop="idType" :formatter="idFormatter" min-width="10%"></el-table-column>

??在Javascript中,實作指定的格式轉換器:

  data() {
    return {
      // 證件型別串列
      idTypeList: [
          {idType:1,idTypeName:"身份證"},
          {idType:2,idTypeName:"社保卡"},
          {idType:3,idTypeName:"駕駛證"},
          {idType:4,idTypeName:"護照"},
          {idType:5,idTypeName:"臨時身份證"},
          {idType:6,idTypeName:"作業證"}
      ],
	  
	  //其它屬性
	  //...
	}
  },
  methods: {
    // 證件型別欄位翻譯
    idFormatter(row, column) {
      var valuehttps://www.cnblogs.com/alabo1999/p/= "";
      for (var i = 0; i < this.idTypeList.length; i++){
        var item = idTypeList[i];
        if (row.idType == item.idType) {
          value = https://www.cnblogs.com/alabo1999/p/item.idTypeName;
          break;
        }
      }
      return value;
    },
  }

??這兩種處理方法都有效,但感覺不是很好,

  • 方法1的問題,是需要列舉各種可能性,如果列舉項很多,代碼固化,書寫是個體力活,且代碼很不簡潔,另外,靈活性不高,如果后端對該欄位增加列舉項,前端也需要修改,

  • 方法2的問題,如果需要欄位轉義的列較多時,需要定義較多的格式轉換器方法,

??因此,推薦使用下面的方案,

2、動態欄位轉義處理方案

2.1、后端使用系統引數表并提供查詢介面

??首先,后端對欄位的列舉型別,均使用系統引數表來存盤,這樣,前后端統一使用同一份資料字典,參見之前的文章:《使用系統引數表,提升系統的靈活性 》,

??然后,后端提供相應的介面,供前端獲取指定類別的引數項(列舉項)串列,介面定義如下:

Path: /sysParam/getParameterClass
Method: POST

介面描述:
請求引數:
Headers
引數名稱		引數值		  是否必須	示例	備注
Content-Type	application/json  是		
Authorization	token		  是			token值
Body
名稱		型別		  是否必須	默認值		備注			其他資訊
classKey	string		  必須				引數類別key	

回傳資料:
名稱	     型別	         是否必須    默認值  備注	    其他資訊
data	     object []	         非必須		    回傳資料	
item   型別: object
├─ SysParameter型別 各欄位,略
code	integer	                 必須		    回傳碼	
message	string	                 必須		    提示資訊	
additional	object	        非必須		    附加資訊,Additional型別,略

2.2、前端獲取系統引數的常規方法

??頁面中獲取系統引數的常規處理方法,如下:

  data() {
    return {
      // 證件型別串列
      idTypeList: [],
	  
	  //其它屬性
	  //...
	}
  },
  created() {
    this.getIdTypeList();
  },
  methods: {
    // 證件型別欄位翻譯
    idFormatter(row, column) {
      var valuehttps://www.cnblogs.com/alabo1999/p/= "";
      for (var i = 0; i < this.idTypeList.length; i++){
        var item = idTypeList[i];
        if (row.idType == item.idType) {
          value = https://www.cnblogs.com/alabo1999/p/item.idTypeName;
          break;
        }
      }
      return value;
    },

    // 獲取證件型別串列資料
    getIdTypeList() {
      let _this = this;
      this.instance.getParameterClass(this.$baseUrl,{"classKey":"id_type"}).then((response) => {
        _this.idTypeList = response.data.data;
      });
    },
  }

??api/index.js中定義instance的介面:

  //獲取類別資訊串列
  getParameterClass (baseurl, data) {
    var url = baseurl + '/sysParam/getParameterClass';
    return instance.post(url, data);
  },

??現在的問題,如果獲取每個引數型別,都要用一個方法來實作,顯得太繁瑣,代碼不優雅,另外,列欄位轉義還是使用了格式轉換器,因為串列資料只能使用遍歷,

2.3、前端開發公共方法來獲取系統引數

??現在的方案,欄位轉義的資料字典由后端定義,這樣一來,前端各個頁面將會大量呼叫獲取系統引數的介面,因此有必要開發公共方法來獲取系統引數,

??引數類別的資料,頁面需要兩種型別的資料:

  • 串列型別,用于選擇框,如查詢條件,此時往往需要在串列中增加一項類似“全部型別”的選項,表示忽略此條件,
  • 字典型別,用于表格列欄位轉義,

??在/src/common/commonFuncs.js中,實作獲取系統引數的方法,代碼如下:

  /**
   * 獲取引數類別資訊串列及字典
   * @param {容器物件} parent 
   * @param {引數類別key} classKey 
   * @param {串列的屬性名} listObjPropName 
   * @param {字典的屬性名} mapObjPropName 
   * @param {欄位資料型別} fieldDatatype 
   */
  getParameterClass(parent, classKey, listObjPropName, mapObjPropName, fieldDatatype="int"){
    parent.instance.getParameterClass(
      parent.$baseUrl, {"classKey" : classKey}
    ).then(res => {
      //console.log(res.data);
      if (res.data.code == parent.global.SucessRequstCode){
        //如果查詢成功
        //console.log(res.data.data);
        if (listObjPropName != undefined && listObjPropName != ""){
          //需要輸出串列資料
          for(var i = 0; i < res.data.data.length; i++){
            var item = res.data.data[i];
            //往后添加資料,不破壞串列原有資料
            parent[listObjPropName].push(item);
          }          
        }
        if(mapObjPropName != undefined && mapObjPropName != ""){
          //需要輸出字典資料
          //字典的key要匹配欄位型別,由于itemKey為型別為字串,而欄位資料型別一般為整型(列舉值)
          //可能需要進行型別轉換
          //遍歷串列資料
          for(var i = 0; i < res.data.data.length; i++){
            var item = res.data.data[i];
            var mapKey;
            if (fieldDatatype == "int"){
              //字串轉int
              mapKey = parseInt(item.itemKey);
            }else{
              mapKey =item.itemKey;
            }
            //加入字典
            parent[mapObjPropName].set(mapKey,item);
          }
        }
      }else{
        alert(res.data.message);
      }
    }).catch(error => {
      alert('查詢系統引數失敗!');            
      console.log(error);
    });
  }

2.4、Vue檔案中獲取系統引數的用法

??樣例Vue檔案,模板代碼如下:

<template>
  <div id="contentwrapper">
    <el-form ref="form" :model="formData" label-width="80px">
      <el-card>
        <el-row>
          <!--占整行-->
          <el-col :span="24">  
            <h5  align=left>用戶管理 / 用戶管理</h5>
            <!-- 分隔線 -->
            <el-divider></el-divider>
          </el-col>              
        </el-row>
        <el-row>
          <el-col align="left" :span="6">
            <el-button type="primary" size="small" @click="addUser">
              <i ></i>添加用戶
            </el-button>
          </el-col>

          <!-- 查詢條件 -->
          <el-col align="left" :span="12">
            <el-form-item label="用戶型別:" label-width="100px">
              <el-select v-model="formData.userTypeLabel" size="small" @change="selectUserType">
                <el-option
                    v-for="(item,index) in userTypeList"
                    :key="index"
                    :label="item.itemValue"
                    :value="https://www.cnblogs.com/alabo1999/p/item"
                />
              </el-select>                  
            </el-form-item> 
          </el-col> 
          <el-col align="right" :span="6">
            <el-button type="primary" size="small" @click="queryUsers">
              <i ></i>查詢
            </el-button>
          </el-col>                
        </el-row>

        <!-- 用戶串列資料 -->
        <el-table :data="https://www.cnblogs.com/alabo1999/p/userInfoList" border stripe :row-style="{height:'30px'}" :cell-style="{padding:'0px'}" style="font-size: 10px">
          <el-table-column label="用戶ID" prop="userId"></el-table-column>
          <el-table-column label="用戶型別" width="80px" prop="userType">
            <template slot-scope="scope">
               <span>{{userTypeMap.get(scope.row.userType).itemValue}}</span>
            </template>           
          </el-table-column>
          <el-table-column label="登錄名" prop="loginName"></el-table-column>
          <el-table-column label="真實名稱" prop="userName"></el-table-column>
          <el-table-column label="手機號碼" prop="phoneNumber" width="80px"></el-table-column>
          <el-table-column label="EMail" prop="email" width="80px"></el-table-column>
          <el-table-column label="操作" width="60px">
              <template slot-scope="scope">
                <el-tooltip  effect="dark" content="編輯" placement="left-start">
                  <el-button size="mini" type="primary" icon="el-icon-edit" circle @click="editUser(scope.row)"></el-button>
                </el-tooltip>                             
              </template>
          </el-table-column>
        </el-table>
      </el-card> 
    </el-form>    
  </div>    
</template>

??模板代碼中,有一個用戶型別的選擇框,還有表格中對用戶型別資料列進行轉義處理,注意資料列轉義處理的處理代碼:

          <el-table-column label="用戶型別" width="80px" prop="userType">
            <template slot-scope="scope">
               <span>{{userTypeMap.get(scope.row.userType).itemValue}}</span>
            </template>           
          </el-table-column>

??這個代碼相當簡潔,

??下面是javascript中與系統引數獲取與設定相關的代碼:

  data() {
    return {
      formData : {
        //查詢資訊
        queryInfo:{
          userType  : 0,
          deleteFlag: 0,
          pagenum   : 1,
          pagesize  : 10      
        },
          
        //用戶型別選擇框當前選擇項的顯示值
        userTypeLabel : "所有型別"
      },

      //用戶型別參照表,構造初始資料項
      userTypeList  : [
        {
          itemKey   : "0",
          itemValue : "所有型別"
        }
      ],

      //用戶型別字典
      userTypeMap : new Map(),

      //查詢到的用戶資訊串列
      userInfoList:[],

      //新增編輯對話框可見標記
      editVisible:false,

      show:false
    }
  },
  created() {
    // ==========================================
    // 獲取需要的系統引數,注意:getParameterClass方法是異步加載資料的,
    // 如需要列印觀察,需要通過watch來處理

    // 獲取用戶型別的引數類別
    this.commonFuncs.getParameterClass(this,"user_type","userTypeList","userTypeMap");
  },
  watch:  {
    userTypeList  : {
      handler(newValue, oldValue){
        //獲取資料后,設定選擇框的初始值;
        this.$set(this.formData,'userTypeLabel',this.userTypeList[0].itemValue);
      },
      immediate: true
    },
    userTypeMap  : {
      handler(newValue, oldValue){
        console.log(newValue);
      },
      immediate: true
    }    
  }, 
  methods: {
    //查詢用戶資訊串列
    queryUsers(){
      let _this = this;
      this.instance.queryUsers(
        this.$baseUrl,this.formData.queryInfo
      ).then(res => {
        console.log(res.data);
        if (res.data.code == this.global.SucessRequstCode){
          //如果查詢成功
          _this.formData.pageInfo.total = res.data.data.length;
          _this.userInfoList = res.data.data;
        }else{
          alert(res.data.message);
        }
      }).catch(error => {
        alert('查詢失敗!');            
        console.log(error);
      });
    },

    //用戶型別選擇
    selectUserType(item){
      console.log(item);
      this.$set(this.formData.queryInfo,'userType',parseInt(item.itemKey));
      this.$set(this.formData,'userTypeLabel',item.itemValue);
    },
  }

??注意事項:

  1. 由于資料是動態獲取的,但vue 無法監聽動態新增的屬性的變化,需要用 $set 來為這些屬性賦值,否則選擇框的選擇選項后,當前值的顯示不會改變,

        //用戶型別選擇
        selectUserType(item){
          console.log(item);
          this.$set(this.formData.queryInfo,'userType',parseInt(item.itemKey));
          this.$set(this.formData,'userTypeLabel',item.itemValue);
        },
    
  2. 為了使得選擇框的選擇能夠生效,

    <el-form ref="form" :model="formData" label-width="80px">
    

    的model設定必須包含選擇框的當前選擇項的顯示值,即:

                <el-form-item label="用戶型別:" label-width="100px">
                  <el-select v-model="formData.userTypeLabel" size="small" @change="selectUserType">
                    <el-option
                        v-for="(item,index) in userTypeList"
                        :key="index"
                        :label="item.itemValue"
                        :value="https://www.cnblogs.com/alabo1999/p/item"
                    />
                  </el-select>                  
                </el-form-item> 
    

    el-select的v-model即userTypeLabel必須在form的model中,也就是說formData必須包含userTypeLabel,

  3. 在data部分,定義了用戶型別的串列和字典物件,其中用戶型別串列用于選擇框,字典用于表格資料列欄位轉義,其中,用戶型別串列設定了初始項,表示全部型別,(也可以約定由后端的系統引數表來統一定義,這樣前端無需設定初始項),

          //用戶型別參照表,構造初始資料項
          userTypeList  : [
            {
              itemKey   : "0",
              itemValue : "所有型別"
            }
          ],
    
          //用戶型別字典
          userTypeMap : new Map(),
    
  4. 系統引數的獲取方法,一般在頁面加載時獲取:

      created() {
        // ==========================================
        // 獲取需要的系統引數,注意:getParameterClass方法是異步加載資料的,
        // 如需要列印觀察,需要通過watch來處理
    
        // 獲取用戶型別的引數類別
        this.commonFuncs.getParameterClass(this,"user_type","userTypeList","userTypeMap");
      },
    

    呼叫公共方法getParameterClass,可以一次性獲取某個引數類別的串列和字典資料,允許獲取某一種型別資料,只需將另一個引數設為空字串即可,

    串列和字典的引數值,必須在data中宣告的屬性名,并且型別要匹配,

    從代碼量看,獲取系統引數的呼叫是相當簡潔的,

  5. 在系統引數獲取成功后的處理,一般在watch中實作,

      watch:  {
        userTypeList  : {
          handler(newValue, oldValue){
            //獲取資料后,設定選擇框的初始值;
            this.$set(this.formData,'userTypeLabel',this.userTypeList[0].itemValue);
          },
          immediate: true
        },  
      }, 
    

    監視到userTypeList資料加載完畢后,設定用戶型別選擇框的初始選擇項,

2.5、效果圖

??運行Vue,在瀏覽器輸入相應url,頁面顯示如下:

??可以看到串列中用戶型別資料列已經轉義顯示,

2.6、其它

??如果資料字典不是由后臺提供,而是前端固化,則只需在data中宣告userTypeMap為字典型別,然后在created事件中,完成初始化即可,

??這種情況下,資料列轉義仍然有效,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/288920.html

標籤:JavaScript

上一篇:Layui Confirm彈出框連續點擊按鈕會觸發多次事件

下一篇:Layui Confirm彈出框連續點擊按鈕會觸發多次事件

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more