找回密码
 注册
搜索
查看: 3077|回复: 0

HTTP协议中POST、GET、HEAD、PUT等请求方法以及一些常见错误

[复制链接]
发表于 2012-6-11 16:24:20 | 显示全部楼层 |阅读模式
原文:http://changfakong.diandian.com/post/2012-02-13/15973956
9 ]& y4 `( m, ?0 `! D, Q! x5 _* \& P& I, T
请求方法是请求一定的Web页面的程序或用于特定的URL。可选用下列几种:
: q: M4 e. o( g# H% J, j1 R GET: 请求指定的页面信息,并返回实体主体。
; a/ K; I) r5 F- ^ HEAD: 只请求页面的首部。1 w$ E! @7 Q5 ]$ K. m6 @8 C% v( E4 Z
POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
6 K( L2 Q  ~  A. f* V PUT: 从客户端向服务器传送的数据取代指定的文档的内容。, U5 J' e( O) ~" p& n# B+ Q3 u
DELETE: 请求服务器删除指定的页面。' U8 ?- S2 S+ i8 N: X
OPTIONS: 允许客户端查看服务器的性能。- W' v' y* S. ?( Y/ @" ~
TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。% s0 [9 B% W. o
PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
; e& ]6 N9 Y/ A4 v! U MOVE: 请求服务器将指定的页面移至另一个网络地址。
, `% j! @& v( Z& a6 H COPY: 请求服务器将指定的页面拷贝至另一个网络地址。# |+ Z  ~6 E3 F& m/ a" ~
LINK: 请求服务器建立链接关系。
9 a* `# W3 `- \) c8 U' S UNLINK: 断开链接关系。
6 s$ a8 M# t" z8 \# l WRAPPED: 允许客户端发送经过封装的请求。
; a, B9 M2 a, b& q Extension-mothed:在不改动协议的前提下,可增加另外的方法。; Z5 R, `& j, Y9 ~
当服务器响应时,其状态行的信息为HTTP的版本号,状态码,及解释状态码的简单说明。现将5类状态码详细列出:
4 k2 f% a- v4 [① 客户方错误
% Q( f# s% p0 V9 i 100  继续8 j) D$ K. u: |7 w% |4 f
101  交换协议. G3 T8 s2 r0 C+ c/ |
② 成功
3 E/ @; f" v2 j 200  OK9 [; \: x% y  |, M9 q6 H
201  已创建
1 m% i9 {. u* X# e 202  接收
& f' B& l" B7 f" [ 203  非认证信息+ `% c  v, t5 O0 `* C$ o. J; h. T
204  无内容/ S* I+ a) U& S' ^5 [
205  重置内容
. M! B7 P; m' K  B 206  部分内容
+ p1 U& K9 Y( Q$ x! ^' v4 ]③ 重定向( L, W- j0 M. ~& s% g2 o. h, A
300  多路选择: @2 x" R; n& r/ v: w5 T
301  永久转移
- f2 P! s/ g5 {, O6 i5 i 302  暂时转移; g* S- O/ P& I
303  参见其它
) d( p% d& u! \& l% |% e. H% m1 T 304  未修改(Not Modified)6 n% j/ f5 Y2 R" V
305  使用代理  @+ L. ]! ]4 g2 e) K
④ 客户方错误
9 |  J( A. r0 m. e2 s: z 400  错误请求(Bad Request)
. R4 {5 y' A0 l* ]/ L. }, W 401  未认证
$ |: y, _1 s" C- { 402  需要付费
2 V* d) @, d: G/ {1 x; ] 403  禁止(Forbidden)
; O, H* t. r2 B. Y; r# Q, m: K 404  未找到(Not Found)+ r" n( d1 M% X" C; ?
405  方法不允许$ D7 {" o% I9 V7 W
406  不接受
2 b, J1 E: Y/ C) N8 _ 407  需要代理认证8 ]% n/ S' w' R" _
408  请求超时
% V( l- @+ N( E! I, e 409  冲突  a+ |1 S: m' k2 u4 e
410  失败
9 \6 k! ?; |0 a3 Q/ d 411  需要长度. s" G$ h8 y9 o6 L' z: e
412  条件失败
; t& v- U! d  g9 i. i) } 413  请求实体太大0 v0 [* T3 M) [/ D
414  请求URI太长, v+ F5 {& X# d
415  不支持媒体类型
7 {5 R8 ]1 _$ A/ @" ^* L: B⑤ 服务器错误
6 d+ ~* r) x3 n, l" h4 c 500  服务器内部错误
# b- p* U' c3 v) P% S 501  未实现(Not Implemented)  `7 V0 e' }6 C; j& l  {+ u. U
502  网关失败. p' @+ I$ w0 z% S+ f
504  网关超时
4 w( b! R7 X5 R' F/ U3 ?% \% H 505 HTTP版本不支持
* P) B/ ?( x0 N$ v; I0 a% s: P4 B% z关于实体头部的内容还可以有:) V0 |/ y0 v: b: i, \
Last Modified :请求文档的最近修改时间。( r( v& N& E) X+ {4 p
Expires :请求文档的过期时间。
+ d$ l9 z( U* ~% L- F4 ^Connect-length:文档数据的长度。
  B8 |: r0 P* I6 I' HWWW-authenricate:通知客户端需要的认证信息。
0 _' z) {- }+ j5 e+ cConnect-encoding :说明有无使用压缩技术。
, O- u$ v4 Z% X9 G9 `Transfer-encoding :说明采用的编码变换类型。
' v9 J8 B' H9 J* S! ^7 Z6 E标准Http协议支持六种请求方法,即:5 s7 U* w8 B5 B- y
0,GET
" Z9 `# C" m  ~2 z6 { 1,HEAD' ~* w, t# B# t3 {
2,PUT9 n% z2 z; @$ E* \& T& Q- X
3,DELETE
( S3 e5 a8 G& |* Y  ]$ B 4,POST
6 G1 k* Q4 |' {7 Y 5,OPTIONS
* g7 w1 u% ^' y 但其实我们大部分情况下只用到了GET和POST。如果想设计一个符合RESTful规范的web应用程序,则这六种方法都会用到。不过即使暂时不想涉及REST,了解这六种方法的本质仍然是很有作用的。大家将会发现,原来web也是很简洁明了的。下面依次说明这六种方法。
: ^* z2 B& M6 x6 ` 0,GET:GET可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。9 {% u( H* x/ q# s/ i
1,HEAD:HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。0 c& n6 `( M/ t2 {4 [* {
2,PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。举个例子:如一个用于提交博文的URL,/addBlog。如果用PUT,则提交的URL会是像这样的”/addBlog/abc123”,其中abc123就是这个博文的地址。而如果用POST,则这个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT和POST用途是不一样的。具体用哪个还取决于当前的业务场景。
3 H4 G' B3 y4 X% P' d 3,DELETE:删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。
/ n& F  s' E+ K1 |$ g, E 4,POST:向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。
7 K3 u: j0 l& p6 a. r 5,OPTIONS:这个方法很有趣,但极少使用。它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
" @! x" r; J; b 其实还有一个TRACE方法,不过这个基本上不会用到,这里就不介绍了。以上的六种方法,我们可以跟数据库的CRUD增删改查操作对应起来:0 w1 a- \8 ^  [( T. J
CREATE :PUT
6 Z3 K# J( v) w8 [$ c1 h READ:GET
$ I, a4 b/ d: N" v6 C UPDATE:POST
( P; \: w2 E( V4 w; O5 U DELETE:DELETE
9 O3 K  c7 h6 B; R 这样一来就实现了HTTP和数据库操作(其实不光是数据库,任何数据如文件图表都是这样)的完美统一,这也是REST的精髓之一。
% i2 d) b) ?) n1 B# I$ n
! t7 K! _8 G" l5 f2 Y3 ^- i
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2025-11-14 18:13 , Processed in 0.026366 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表