1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        http請求中g(shù)et和post方法的區(qū)別

        共 1798字,需瀏覽 4分鐘

         ·

        2020-11-06 11:44

        一、原理區(qū)別


        一般我們在瀏覽器輸入一個網(wǎng)址訪問網(wǎng)站都是GET請求;再FORM表單中,可以通過設(shè)置Method指定提交方式為GET或者POST提交方式,默認(rèn)為GET提交方式。

        HTTP定義了與服務(wù)器交互的不同方法,其中最基本的四種:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被稱為安全方法,因為使用GET和HEAD的HTTP請求不會產(chǎn)生什么動作。不會產(chǎn)生動作意味著GET和HEAD的HTTP請求不會在服務(wù)器上產(chǎn)生任何結(jié)果。但是安全方法并不是什么動作都不產(chǎn)生,這里的安全方法僅僅指不會修改信息。

        根據(jù)HTTP規(guī)范,POST可能會修改服務(wù)器上的資源的請求。比如知乎編寫文章,用戶提交一篇文章或者一個讀者提交評論是通過POST請求來實現(xiàn)的,因為再提交文章或者評論提交后資源(即某個頁面)不同了,或者說資源被修改了,這些便是“不安全方法”。


        二、使用時最直觀的區(qū)別


        最直觀的區(qū)別就是GET把參數(shù)包含在URL中,POST通過request body傳遞參數(shù)。


        get請求:


        jKXbe2Ez9y.png


        post請求:


        BDJesEoUlk.png


        三、為什么get比post更快


        1.post請求包含更多的請求頭


        因為post需要在請求的body部分包含數(shù)據(jù),所以會多了幾個數(shù)據(jù)描述部分的首部字段(如:content-type),這其實是微乎其微的。

        2.最重要的一條,post在真正接收數(shù)據(jù)之前會先將請求頭發(fā)送給服務(wù)器進(jìn)行確認(rèn),然后才真正發(fā)送數(shù)據(jù)


        post請求的過程:

        (1)瀏覽器請求tcp連接(第一次握手)

        (2)服務(wù)器答應(yīng)進(jìn)行tcp連接(第二次握手)

        (3)瀏覽器確認(rèn),并發(fā)送post請求頭(第三次握手,這個報文比較小,所以http會在此時進(jìn)行第一次數(shù)據(jù)發(fā)送)

        (4)服務(wù)器返回100 Continue響應(yīng)

        (5)瀏覽器發(fā)送數(shù)據(jù)

        (6)服務(wù)器返回200 OK響應(yīng)

        get請求的過程:

        (1)瀏覽器請求tcp連接(第一次握手)

        (2)服務(wù)器答應(yīng)進(jìn)行tcp連接(第二次握手)

        (3)瀏覽器確認(rèn),并發(fā)送get請求頭和數(shù)據(jù)(第三次握手,這個報文比較小,所以http會在此時進(jìn)行第一次數(shù)據(jù)發(fā)送)

        (4)服務(wù)器返回200 OK響應(yīng)

        也就是說,目測get的總耗是post的2/3左右,這個口說無憑,網(wǎng)上已經(jīng)有網(wǎng)友進(jìn)行過測試。

        3.get會將數(shù)據(jù)緩存起來,而post不會


        可以做個簡短的測試,使用ajax采用get方式請求靜態(tài)數(shù)據(jù)(比如html頁面,圖片)的時候,如果兩次傳輸?shù)臄?shù)據(jù)相同,第二次以后消耗的時間將會在10ms以內(nèi)(chrome測試),而post每次消耗的時間都差不多。經(jīng)測試,chrome和firefox下如果檢測到get請求的是靜態(tài)資源,則會緩存,如果是數(shù)據(jù),則不會緩存,但是IE什么都會緩存起來,當(dāng)然,應(yīng)該沒有人用post去獲取靜態(tài)數(shù)據(jù)吧,反正我是沒見過。


        四、面試是一般怎么回答get和post的區(qū)別


        (1)post更安全(不會作為url的一部分,不會被緩存、保存在服務(wù)器日志、以及瀏覽器瀏覽記錄中)

        (2)post發(fā)送的數(shù)據(jù)更大(get有url長度限制)

        (3)post能發(fā)送更多的數(shù)據(jù)類型(get只能發(fā)送ASCII字符)

        (4)post比get慢

        (5)post用于修改和寫入數(shù)據(jù),get一般用于搜索排序和篩選之類的操作(淘寶,支付寶的搜索查詢都是get提交),目的是資源的獲取,讀取數(shù)據(jù)


        五、測試get和post請求的工具


        get和post請求一般使用的是接口測試工具,接口測試工具我個人一般使用的是:apipost和jmeter。

        apipost是一款國產(chǎn)的接口測試工具和接口文檔生成工具,能夠滿足我們?nèi)粘9ぷ鳟?dāng)中對于接口測試和接口文檔生成的工作需求。接口文檔還可以支持多種格式的生成,有在線版、markdown、word版等多種格式的接口文檔。

        ngUWrlGi63.png


        jmeter可以進(jìn)行接口測試和性能測試,但是對于做單純的接口測試jmeter操作起來沒有apipost使用起來方便。jmeter重點在于壓力測試,穩(wěn)定性測試和負(fù)載測試。針對于接口和程序的穩(wěn)定性設(shè)計的一塊以軟件性能為主接口測試為輔的接口測試工具。


        ZPZ0KgQnVW.png


        工具下載地址:https://www.apipost.cn

        瀏覽 47
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            成品大香伊煮有限责任公司 | gay同性戒尺打屁股男男在线观看 | 夜夜高潮夜夜操天天操 | 国产成人麻豆免费观看 | 国产无码黄色 | 大香蕉性 | 91成人无码AⅤ片在线观看 | 国产午夜激无码毛片不卡十第1集 | 考逼久久 | 欧美色图3p |