一、http请求中get、post、put、delete的使用场景分别是什么?
Get:get请求会向数据库发起索取数据的请求,从而获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
Post:post请求是向服务端发送数据的,该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
Put:PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
Delet:用来删除某一个资源的,该请求就像数据库的delete操作。
二、如何使用浏览器取消一个正在请求的ajax
原生XHR:
var native=new XMLHttpRequest(); navive.open("GET","https://api.github.com"); native.send(); native.onreadystatechange=function(){ if(native.readyState==4&&native.status==200){ console.log(native.response); }else{ console.log(native.status); } } native.abort();//取消请求
Axios取消请求:
const CancelToken=axios.CancelToken
let call:
axios.get('/user/12345',{
cancelToken:new CancelToken(
// executor 函数接收一个 cancel 函数作为参数,这个参数 c 就是CancelToken构造函数里面自带的取消请求的函数,这里把该函数当参数用 cancel = c;
)
})
cancel();//取消请求
三、content-type?
互联网媒体类型;在http协议消息头中,使用Content-Type来定义具体请求的媒体类型信息。
application/json:消息主体是序列化后的 JSON 字符串
application/x-www-form-urlencoded: 这应该是最常见的 POST 提交数据的方式了。浏览器的原生 form 表单,如果不设置 enctype 属性, 那么最终就会以 application/x-www-form-urlencoded 方式提交数据。请求的时候,首先,Content-Type 被指定为 application/x-www-form-urlencoded; 其次,提交的数据按照 key1=val1&key2=val2 的方式进行编码。 大部分服务端语言都对这种方式有很好的支持。
multipart/form-data: 我们使用表单上传文件时,必须让 form 的 enctyped 等于这个值。
如果数据是简单、平面的key-value键值对,那么使用application/x-www-form-urlencoded简单实用,不需要额外的编解码
如果数据是复杂的嵌套关系,有多层数据,那么使用application/json会简化数据的处理