關於Get與Post的區別的文章,在網上太多了;有優點有缺點,今天我給各位大哥做一個總結性的隨筆,還請多多包涵~

  首先是W3School上的答案,請查收: 

  • GET在浏览器回退时是无害的,而POST会再次提交请求

  • GET产生的URL地址可以被Bookmark,而POST不可以。

  • GET请求会被浏览器主动cache,而POST不会,除非手动设置。

  • GET请求只能进行url编码,而POST支持多种编码方式。

  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

  • GET请求在URL中传送的参数是有长度限制的,而POST么有。

  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

  • GET参数通过URL传递,POST放在Request body中。

以上答案物先後順序,可作為理解的參考,還請記得這些答案,後面的講解會涉及到這些。

  然而,這些get,post,head,put,delete等方法都是建立在http協議上的服務方式,基於tcp傳輸協議運行在網路上。所以在

這一根本的前提上,get,post等相關的服務方式沒什麼區別,除了一些現象版的區別,再無其他。這些現象版的區別表現在傳輸數據上的差別,

get在請求傳輸數據時,url聯同數據頭一併發送;而post在處理請求數據的響應時,先發送url,得到回應後再傳送數據。

兩者之間的優缺點可以基於傳送數據的時間和安全性上總對比:get由於一併打包發送數據,所以時效性強,速度快,但是安全性也是暴露無遺;

post由於請求url有數據分開,所以在安全性上比get略高一籌,但是在傳輸速度上沒get方式快。當然,這一切對比的基礎都是物理條件相同的情況下,才有的對比結果。

  1. OPTIONS 返回服务器所支持的请求方法
  2.   GET 向服务器获取指定资源
  3.   HEAD 与GET一致,只不过响应体不返回,只返回响应头
  4.   POST 向服务器提交数据,数据放在请求体里PUT 与POST相似,只是具有幂等特性,一般用于更新
  5.   DELETE 删除服务器指定资源
  6.   TRACE 回显服务器端收到的请求,测试的时候会用到这个
  7.   CONNECT 预留,暂无使用

以上是比較常用的http協議下的服務類型。不知道的不用再去百度了,在這裡這一份就可以解決問題。

常用的狀態碼:

HTTP状态码

 HTTP协议中提供了好多状态码,列举我们常用的:

  200 返回正常

  304 服务端资源无变化,可使用缓存资源

  400 请求参数不合法

  401 未认证

  403 服务端禁止访问该资源

  404 服务端未找到该资源

  500 服务端异常

這裡就引申出來一個簡單的應用接口:Restful Api

  服务端根据不同的请求方式,可以做不同的处理,同时,根据不同的请求,还可以设计出不同风格的应用程序接口,这就引出了Representational State Transfer,英文缩写就是REST,中文意思是表述性状态转移(和没翻译差不多),可以理解为客户端和服务端的交互形式。而符合这种交互形式的接口设计,就被叫做RESTful API。这种风格有如下特点:

  使用名词而不使用动词

  例如:/getStudent 或者 /searchStudents 应该改成 /students

  GET用于查询,PUT、POST、DELETE用于修改

  使用名词复数不使用单数

  在HTTP请求的head体里定义序列化类型

  例如:Content-Type:application/json

  请求的集合应设定好过滤条件、排序、字段、分页

  例如:/students?page=1&size=10

  接口要版本化

  例如:/api/v1/students

  要有HTTP状态码

  允许重写HTTP请求方法

case:

  要使用這個案例就要介紹幾個工具了:

1.npm i  json-server  -g 全局下載json-server.

2.這個前提是在nodejs的環境下完成的,請下載最新版本。

3.postman測試接口的有效軟件工具,配合get,post可以很簡單方便的查看,接口數據的使用和分佈。

由於時間有限,就不做多的解釋了;又能力的朋友可以去測試一下,就當做娛樂了:).

Get與Post的區別--總結隨筆的更多相关文章

  1. <a>與<link>的區別

    <a>連接網頁: <link>定義文檔與外部資源的關係或引用外部樣式表,屬性ref表示連接對象的類型,stylesheet表示連接的是css類型的. 參考資料: https:/ ...

  2. 淺析LED、LED背光、OLED的技術原理與區別

    眼下很多廠商在推廣自己產品的時候都偷換了概念.明明是LED背光顯示器卻要簡稱為LED顯示器.事實上LED顯示器和目前的LED背光顯示器有著本質的區別.當然容易讓大家混淆的還有個技術非常先進的OLED. ...

  3. mfc extention dll 與 normal dll 的區別

    extention dll 1.指從MFC中繼承過來的DLL,一般要求使用共享MFC DLL進行連接,也要求調用者也使用MFC且使用共享MFC,如此可保證DLL與調用者有相同的MFC庫. 2.在使用資 ...

  4. CMOS和TTL的區別

    TTL電路是晶體管-晶體管邏輯電路的英文縮寫(Transister-Transister-Logic ),是數字集成電路的一大門類.它采用雙極型工藝制造,具有高速度低功耗和品種多等特點. CMOS是: ...

  5. setImageResource和setBackgroundResource的區別

    它們的原型如下:void android.widget.ImageView.setImageResource(int resId)void android.view.View.setBackgroun ...

  6. 數據庫ORACLE轉MYSQL存儲過程遇到的坑~(總結)

    ORACLE數據庫轉MySQL數據庫遇到的坑 總結 最近在做Oracle轉mysql的工程,遇到的坑是真的多,尤其是存儲過程,以前都沒接觸過類似的知識,最近也差不多轉完了就總結一下.希望能幫到一些人( ...

  7. [FAQ]String(字串相連)與StringBuilder的差別、原理與優缺點?

    原文位於 http://www.dotblogs.com.tw/mis2000lab/archive/2013/09/09/msdn_string_stringbuilder.aspx [FAQ]St ...

  8. DC-DC芯片 同步和異步方式有什么區別

    同步方式是集成了High side和Low side MOSFET,組成同步整流模式,可實現高效率,價格相對貴.異步方式只有High side MOSFET;配合外部使用傳統的續流二極管,組成非同步整 ...

  9. JavaScript 的setTimeout 和Angular中的$timeout的區別

    JavaScript中setTimeout返回值类型和意义说明: 1.setTimeout :暂停指定的毫秒数后执行指定的代码,返回值是id标识,这个id的意义就是通过clearTimeout来清理暂 ...

随机推荐

  1. Storm一个executor里运行多个task是为了rebalance

    默认情况下下,一个executor运行一个component,即一个task,但有时会指定多个task: 1 builder.setBolt("", new XxBolt()).s ...

  2. git repo代码部署策略及工具

    一般在项目或者产品开发流程中,先是开发人员在本地做好开发及测试,其中可能包含很多用于测试用的目录以及源代码文件,在部署前往往会有一个build过程.web项目最终build产生出优化生产环境下减少ht ...

  3. Oracle 处理坏块

    本文主要介绍如何去处理在Oracle数据库中出现坏块的问题,对于坏块产生在不同的对象上,处理的方法会有所不同,本文将大致对这些方法做一些介绍.因为数据库运行时间长了,由于硬件设备的老化,出现坏块的几率 ...

  4. Windows自带强大的入侵检测工具——Netstat 命令 查询是否中木马

    Netstat命令可以帮助我们了解网络的整体使用情况.根据Netstat后面参数的不同,它可以显示不同的网络连接信息.Netstat的参数如图,下面对其中一些参数进行说明.如何检测本机是否有被中木马, ...

  5. [翻译] CSStickyHeaderFlowLayout

    CSStickyHeaderFlowLayout https://github.com/jamztang/CSStickyHeaderFlowLayout Parallax, Sticky Heade ...

  6. UNIX高级环境编程(8)进程环境(Process Environment)- 进程的启动和退出、内存布局、环境变量列表

    在学习进程控制相关知识之前,我们需要了解一个单进程的运行环境. 本章我们将了解一下的内容: 程序运行时,main函数是如何被调用的: 命令行参数是如何被传入到程序中的: 一个典型的内存布局是怎样的: ...

  7. 初学Linux(一)关闭操作shutdown halt reboot

    1.shutdown –h 10 #这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中. 2.Shutdown –h now #立马关机 3.Shutdown –h 11:1 ...

  8. AC自动机, 字符串匹配算法

    package utils import java.util.HashMapimport java.util.LinkedListimport util.control.Breaks._import ...

  9. 列表 ->join---> 字符串 转类型:x--->y类型 y(x)

    列表     ->join--->           字符串 转类型:x--->y类型        y(x)

  10. 《面向对象程序设计》 三 Calculator 计算器初步

    Git传送门 纸上得来终觉浅,绝知此事要躬行. 学习了一些c++的相应知识后,虽然了解写法,真正操作时还是出现小错误.要多操作,记住关键点,避免不该有的小错误. 写分文件类外定义时出现了问题.在Sca ...