One 、 Principle difference
Generally, we enter a website address in the browser to visit the website GET request ; Again FORM In the form , Can be set by Method Specify the submission method as GET perhaps POST submission , The default is GET submission .
HTTP Defines different ways to interact with the server , The most basic four of them :GET,POST,PUT,DELETE,HEAD, among GET and HEAD It's called a security method , Because use GET and HEAD Of HTTP The request doesn't produce any action . No movement means GET and HEAD Of HTTP The request doesn't produce any results on the server . But security methods don't mean that nothing happens , The security method here simply means that the information will not be modified .
according to HTTP standard ,POST Requests that may modify resources on the server . For example, Zhihu writes articles , A user submits an article or a reader submits a comment by POST Request to implement , Because re submit articles or comments, resources after submission ( That is, a page ) different , Or the resources have been modified , These are “ Unsafe methods ”.
Two 、 The most intuitive difference when using
The most intuitive difference is GET Include the parameter in URL in ,POST adopt request body Pass parameters .
get request :
post request :
3、 ... and 、 Why? get Than post faster
1.post The request contains more request headers
because post Need to be in the requested body Part contains data , So there will be a few more first fields in the data description section ( Such as :content-type), It's very small .
2. The most important one ,post Send the request to the server for confirmation before receiving the data , And then really send the data
post Process of request :
(1) Browser request tcp Connect ( The first handshake )
(2) The server promised to do tcp Connect ( The second handshake )
(3) Browser confirmation , And send the post Request header ( The third handshake , This message is relatively small , therefore http The first data transmission will take place at this time )
(4) Server return 100 Continue Respond to
(5) Browser sends data
(6) Server return 200 OK Respond to
get Process of request :
(1) Browser request tcp Connect ( The first handshake )
(2) The server promised to do tcp Connect ( The second handshake )
(3) Browser confirmation , And send the get Request headers and data ( The third handshake , This message is relatively small , therefore http The first data transmission will take place at this time )
(4) Server return 200 OK Respond to
in other words , Visual measurement get The total cost of post Of 2/3 about , There is no justification for this statement , Some netizens have tested it on the Internet .
3.get Will cache the data , and post Can't
You can do a short test , Use ajax use get Method request static data ( such as html page , picture ) When , If the data transmitted twice is the same , The time consumed after the second time will be 10ms within (chrome test ), and post It takes almost every time . After testing ,chrome and firefox If you detect get Static resources are requested , It will cache , If it's data , Will not cache , however IE Everything will be cached , Of course , No one should use post Go get static data , Anyway, I haven't seen .
Four 、 How to answer the interview get and post The difference between
(1)post More secure ( Not as url Part of , Will not be cached 、 Save in server log 、 And browser browsing records )
(2)post The data sent is bigger (get Yes url Length limit )
(3)post Can send more data types (get Can only send ASCII character )
(4)post Than get slow
(5)post Used to modify and write data ,get Generally used for search sorting and filtering operations ( TaoBao , Alipay's search queries are get Submit ), The purpose is to obtain resources , Reading data
5、 ... and 、 test get and post Requested tools
get and post Requests generally use interface testing tools , I usually use interface testing tools :apipost and jmeter.
apipost Is a domestic interface testing tool and interface document generation tool , It can meet our daily work requirements for interface testing and interface document generation . Interface documents can also support the generation of various formats , There's an online version 、markdown、word Version and other formats of interface documents .
jmeter Interface testing and performance testing can be done , But for simple interface testing jmeter It doesn't work apipost Easy to use .jmeter The point is stress testing , Stability testing and load testing . Aiming at the stability of the interface and program, an interface testing tool is designed with software performance as the main function and interface test as the auxiliary .
Tool download address :ApiPost - Directly generated documents API debugging 、 Management tools