很多时候,我很喜欢角的编码风格,特别是角支持打印稿之后,完整的生命周期,完美的钩子函数,都是别的语言所无法替代的。
这里我来说说我自己的网络请求封装,某种意义上来说,角自己的网络请求封装的很好的,我们没有必要再来画蛇添足,但是,可能是我有那么一点点的代码洁癖吧,喜欢自己的风格样式,所以就有了这一点多余的东西。
这里是角自己的网络请求。
-
<李> url代表网络请求地址,李>
<李>参数网络请求参数李>
<李>网络请求配置,例如:请求头等李>
this.http。帖子(url、参数、配置).subscribe ( (res)=比;{//肭蟪晒? },(err)=比;{//肭笫О? }()=比;{//肭笸瓿? } ); >之前很多时候我觉得,每一次请求都要写上订阅里面的那些参数,很麻烦,或者说看起来觉得不喜欢,所以,我一般给自己封装一个新的服务服务。同时给每一个需要做网络请求的组件组件实现一个新的接口接口,这里面有很多都是源自java语言的设计思想。
这里创建一个网络接口,来完成网络请求的回调。
出口接口> 公开发布(回调url:字符串参数:FormData:> 出口类LoginComponent实现OnInit OnHttpImp { 公共validateForm: FormGroup; 公共username_control: AbstractControl; 公共password_control: AbstractControl; 构造函数(私人fb: FormBuilder, 私人http: HttpUtil) { } ngOnInit () { 这一点。validateForm=this.fb.group ({ “用户名”:[null, [Validators.required]], “密码”:[null, [Validators.required]], 记住:(真正的), }); 这一点。username_control=this.validateForm.controls(“用户名”); 这一点。password_control=this.validateForm.controls['密码']; } _submitForm () { const params=new FormData (); const md5=new md5 (); const密码=md5.appendStr (this.password_control.value)指标()最终; 参数个数。设置(“用户名”,this.username_control.value); 参数个数。集(‘密码’,password.toString ()); this.http。邮报》('/user/登录参数,这); } onResult(代码# 63;结果:HttpResult:数字):空白{//如果多个网络请求,需要传值入代码,根据代码值来判断请求来源//swthch(代码){//100年情况:////中断;//}//如果单个请求,直接处理请求结果。//console.log(结果) } }上面的htpp请求传输的OnHttpImp对象是这个,那么就说明LoginComponnt组件必须实现OnHttpImp接口,然后实现里面的函数onResult, onError和onComplete。
这样处理,就可以将http请求和,数据处理分开了,代码的可读性和简洁性都有大大的提升。
<强> 强>
<李>可以把上述里面组件里面调用网络请求时传入的,用一个统一的类MCallback来替代,统一处理返回的数据。李> <李>可以把所有的网络请求统一放到一个服务里面,通过调用方法名来请求,这样可以实现多次网络请求的耦合,但是个人觉得有点过度封装了。李>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
角网络请求的封装方法