GET与POST分析

    科技2022-08-20  91

    我们通常在讨论 GET vs POST 的时候,实际上讨论的是 specification,而不是 implementation。什么是 specification?说白了就是相关的 RFC。implementation 则是所有实现了 specification 中描述的代码/库/产品,比如 curl,Python 的 requests 库,或者 Chrome。POST 请求怎么发送,根本就不是这段 RFC 在讨论的事情。RFC 中只说明了 100 continue 和 Expect header 的联系,比如你想在 GET 请求里带 body,一样可以发送 Expect: 100-continue 并等待 100 continue,这是符合标准的。

    你不能说『Chrome 在 AJAX POST 的时候会发两个 TCP packets,GET 只会发一个』是 GET 和 POST 的区别

    一种语言是合法句子的集合。什么样的句子是合法的呢?可以从两方面来判断:语法和语义。语法是和文法结构有关,然而语义是和按照这个结构所组合的单词符号的意义有关。合理的语法结构并不表明语义是合法的。例如我们常说:我上大学,这个句子是符合语法规则的,也符合语义规则。但是大学上我,虽然符合语法规则,但没有什么意义,所以说是不符合语义的。

    对于HTTP请求来说,语法是指请求响应的格式

    POST /test.php HTTP/1.1 //请求行 HOST:www.test.com //请求头 User-Agent:Mozilla/5.0 (windows NT 6.1;rv:15.0)Gecko/20100101 Firefox/15.0 //空白行,代表请求头结束 Username=admin&password=admin //请求正文

    语义则定义了这一类型的请求具有什么样的性质,那么在具体实现这两个方法时,就必须考虑其语义,做出符合其语义的行为 当然在符合语法的前提下实现违背语义的行为也是可以做到的,比如使用GET方法修改用户信息,POST获取资源列表,这样就只能说这个请求是「合法」的,但不是「符合语义」的。 写到这里突然联想到XML里面的两个概念:Well Formed和Valid,似乎也正是语法和语义的理念呢。

    RFC就是定义语义的

    200:客户端请求成功,是最常见的状态。 302:重定向。 404:请求资源不存在,是最常见的状态。 400:客户端请求有语法错误,不能被服务器所理解。 401:请求未经授权。 403:服务器收到请求,但是拒绝提供服务。 500:服务器内部错误,是最常见的状态。 503:服务器当前不能处理客户端的请求。

    axios.post请求的语法!!!

    注意顺序!!!!

    Processed: 0.020, SQL: 9