网络请求是每个前端都要学会的一部分,所以面试时问道关于此方面的,一般不能出错。
网络请求一般是做什么的
网络请求一般就是用来与后端服务进行数据交互,比如登录验证、商品数据获取、提交商品信息等,一般一个网络请求包含几个部分:
请求地址url:也就是网址
请求头header:一般包含一些协议相关,像浏览器能处理的字符类型,用户代理的字符串等等,还有cookie也在请求头里,也可以加一些自己想要的数据。一般header是一个键值对存在的列表。
一般除了 cookie、Content-Type和一些特殊的设置,别的请求头都不用动。
请求方法method:一般用的比较多的是GET和POST,另外还有PUT、OPTION、DELETE等等,get一般是明文的参数请求,顾名思义就是获取类的接口用的比较多,比如获取商品信息。get的参数是拼接在url后面的,比如https://baidu.com?a=1&b=2&c=3
那么后端拿到的参数就是,a=1,b=2,c=3。
post一般是表单类、提交类、验证类的接口,他的参数是含在请求的Body里的,相对get也隐蔽一点,至少不是明文传输。
put一般用不到,他发送请求的时候,会先发送一次预检,看后端是否接受,如果接受再发送主要的内容,所以put方式一般会发送两次。
option、delete随着技术发展用的就更少了,感兴趣可以自己查一下。
uniapp里的请求
let host = 'http://www.suntest.com'
uni.request({
url: host + '/getOrder',
method: 'GET',
header:{
token : uni.getStorageSync("TOKEN")
},
data: {
phone : this.phone
},
success: res => {
console.log(res);
},
fail: () => {},
});
以上是一个uniapp使用uni.request的标准模板。
一般我们将host也就是基础的域名保存在一处,因为通常一个项目里的接口根域名都是一样的。
不一样的就是后面后缀的地方,比如上面的getOrder。
header里就可以加些自己想加的东西,比如上面的Token
data也是以键值对的形式传入的,不管get还是post,都可以放在data里,get会自己拼接url。
success和fail都是回调,如果请求成功取到了数据,会在res那个参数里(也可以不叫res),拿到res,就可以进行后面的操作了。