模拟面试题,今天刷到了,我除了知道传参方式略有不同之外,什么也回答不上来。
干了这么多年的前端,不知道这个,说实话,有点汗颜。
正文
URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作。
六种方式
- Get 向特定资源发出请求(请求指定页面信息,并返回实体主体)
- Post 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改
- Put 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)
- Delete 请求服务器删除request-URL所标示的资源(请求服务器删除页面)
- Head 与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求类似,返回的响应中没有具体内容,用于获取报头)
- opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送测试服务器功能(允许客户端查看服务器性能)
GET
GET一般用于获取/查询资源信息。
POST
post向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改。
post请求一般通过body传递参数。
包括一些文件上传什么的,常用这种请求类型。
PUT
这个方法比较少见,HTML表单也不支持这个,常见的工作任务中,多数后端都更远已使用post来取代put。
本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。
就是说,put是更在更新服务器上已经存在的数据。
举个例子:如一个用于提交博文的URL,/addBlog。如果用PUT,则提交的URL会是像这样的”/addBlog/abc123”,其中abc123就是这个博文的地址。而如果用POST,则这个地址会在提交后由服务器告知客户端。
目前大部分博客都是这样的,显然,PUT和POST用途是不一样的。具体用哪个还取决于当前的业务场景。
DELETE
删除某一个资源。
因为目前大多数公司业务删除都是伪删除,所以这种类型的请求很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。
HEAD
和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。
有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。
OPTIONS
这个方法很有趣,但极少使用。它用于获取当前URL所支持的方法。
若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
结语
一度以为接口常见的请求方式就四种,如果不是今天刷面试题,还真不清楚这个冷知识,也是颇为长见识了。