版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shangrila_kun/article/details/89053193
- 什么是HTTP协议
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)等协议。
- HTTP支持的七种情况方式
- GET
- POST
- PUT
- Delete
- HEAD
- Options
- Patch
- 七种方式有什么功能?应用场景是?
- GET:
GET是用于获取资源的(例如html文本,xml,png,json等)。
安全和幂等。- HEAD:
HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,但是在这种场景下还是比较适合的:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。rest ful api中很少使用head请求。
安全和幂等。- PUT:
用于创建和更新资源,这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。在restful api 中一般使用put更新资源。
非安全、幂等;
4.DELETE:
删除某一个资源。
非安全、幂等。
5.POST:
向服务器提交数据,用于创建资源。
非安全、非幂等。- OPTIONS:
这个方法很有趣,但极少使用。用于url验证,验证接口服务是否正常。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
安全、幂等。- Patch
用于创建、更新资源,于PUT类似,区别在于PATCH代表部分更新;
非安全、非幂等;
- 为什么应该各司其职了
其实不管什么增删改查,对于所有 http 请求,一律采用 POST,也能实现所有的业务,但是为什么不这样了。
- post,get,put,delete 是标准,如果大家都采用这种方式,那么调用接口可读性好。毕竟接口除了自己调用外,还需要给别人调用,遵守这样的规则,于人于己都是有利的。
- GET 请求可被缓存,请求的记录可以保持到浏览器中, 请求可被收藏为书签。POST 请求不会被缓存,比较安全, 请求不会保留在浏览器历史记录中, 不能被收藏为书签。因为get可以快取, 缓存和保留历史记录及书签等特殊功能。
- post和put的区别:
post和put的区别在于uri,或者说post用于创建子资源,比如接口:POST /api/person/ 会创建一个资源比如 /api/person/1或者/api/person/2 … 或者/api/person/n,创建了新的uri,而put方法创建资源的uri是 PUT /api/person/1,这样就创建了一个资源,如果1已经存在那么就是更新,所以put并不是只是更新操作。再有post是非幂等的。
通常情况下,我们都会将post、get、put、delete对应到CRUD操作上,但实际上put并不是只能更新。
- patch的使用:
patch是2010后成为的正式http方法,详见RFC5789,它是对put的补充,在没有patch之前,我们都是用put进行更新操作,这时候我们的接口中通常会有一个逻辑规则,如:如果对象的的一个字符属性为NULL,那么就是不更新该属性(字段)值,如果对象的字符属性是“”,那么就更新该属性(字段)的值,通过这种方式来避免全部覆盖的操作。现在有了patch就解决了这种判断,在put接口中不管属性是不是null,都进行更新,在patch接口中就对非null的进行更新;
- 什么是幂等性
刚刚对上面的请求方式分别给出了他们是否具有幂等性,可能有些不懂的,可以参考这篇文章: