常用的HTTP方法
GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
PUT:传输文件,报文主体中包含文件内容,保存到对应URI位置。
HEAD:获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
对于程序员来说,GET 和POST 基本可以解决大部分的请求,但根据Http协议的初衷
其中每个请求方法对应着不同的请求方式
对于概括的增删改查来讲 大致对应如下
GET 对应查 POST 对应增 PUT 对应改 DELETE 对应删
GET请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
POST 请求一般是增加新的数据
PUT 请求一般是对现有数据进行更新操作
DELETE 请求一般用来删除数据
虽然GET和POST 可以实现基本请求,但为了规范我们可以试着使用其他的,对于很多地方,可能只支持GET 和 POST 我们要视情况而定,
- GET请求能够被缓存
- GET请求会保存在浏览器的浏览记录中
- 以GET请求的URL能够保存为浏览器书签
- GET请求有长度限制
- GET请求主要用以获取数据
- POST请求不能被缓存下来
- POST请求不会保存在浏览器浏览记录中
- 以POST请求的URL无法保存为浏览器书签
- POST请求没有长度限制
区别一(使用场景):
get重点在从服务器上获取资源,post重点在向服务器发送数据;
区别二(请求数据位置):
get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?"连接,多个请求数据间用"&"连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的;
post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;
区别三(请求数据大小):
Get传输的数据量小,因为受URL长度限制,但效率较高;
Post可以传输大量数据,所以上传文件时只能用Post方式;
区别四(安全性):
get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;
post较get安全性较高;
区别五(编码集合):
get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。
post支持标准字符集,可以正确传递中文字符。
区别六(共享性):
get请求的请求数据在url中,便于分享连接,可以添加到书签,而post请求不可以。。
区别七(缓存):
get请求能被缓存,而post请求不行。
区别八(表单重复提交):
点击返回/刷新按钮,对get请求没有影响,对于post请求可能会导致数据重发(浏览器会提示)。
常用的HTTP状态码
1、状态码的类别
503:服务器正忙
详细说明
1.1、2XX 成功
2XX 的响应结果表明请求被正常处理了。
1.1.1、200 OK
表示从客户端发来的请求在服务器端被正常处理了。在响应报文内,随状态码一起返回的信息会因方法的不同而发生改变。比如,使用GET 方法时,对应请求资源的实体会作为响应返回;而使用 HEAD 方法时,对应请求资源的实体首部不随报文主体作为响应返回(即在响应中只返回首部,不会返回实体的主体部分)。
1.1.2、204 No Content
1.1.3、206 Partial Content
该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的 GET 请求。响应报文中包含由 Content-Range 指定范围的实体内容。
1.2、3XX 重定向
3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。
1.2.1、301 Moved Permanently
http://example.com/sample
1.3、4XX 客户端错误
4XX 的响应结果表明客户端是发生错误的原因所在。
该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。另外,浏览器会像 200 OK 一样对待该状态码。
该状态码表明对请求资源的访问被服务器拒绝了。服务器端没有必要给出拒绝的详细理由,但如果想作说明的话,可以在实体的主体部分对原因进行描述,这样就能让用户看到了。未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发送源 IP 地址试图访问)等列举的情况都可能是发生 403 的原因。
该状态码表明服务器端在执行请求时发生了错误。也有可能是 Web 应用存在的 bug或某些临时的故障。
该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果事先得知解除以上状况需要的时间,最好写入 RetryAfter 首部字段再返回给客户端。
超详细的http状态码 请移步 oschina