关于分层架构的思想

问题:在写用户登录模块的时候,要请求相应的接口,这时接口的封装涉及到分层架构

解决:

1.工具层:封装ajax请求的公共方法

2.数据层:根据不同的模块,对应封装不同的请求接口

3.业务层:调用相应的接口函数,传相应的参数

class MUtil {
	request(param){
		return new Promise((resolve,reject) =>{
			$.ajax({
				type     : param.type     || 'get',
				url      : param.url      || '',
				dataType : param.dataType || 'json',
				data     : param.data     || null,
				success  : res => {
					//请求成功
					if (res.status === 0){
						typeof resolve === 'function' &&	resolve(res.data,res.msg)//resolve为true,执行后面的语句
					}
					//未登录
					else if (res.status === 10){
						this.doLogin();
					}else{
						typeof reject === 'function' &&	reject(res.msg || res.data)//resolve为true,执行后面的语句
					}
				},
				err      : err => {
					typeof reject === 'function' &&	reject(err.statusText)
				}

			});
		})

	}
	//跳转登录
	doLogin(){
		window.location.href = '/login?redirect=' + encodeURIComponent(window.location.pathname) ;//处理特殊字符,安全处理
	}

}
export default MUtil;

 

import Mutil 		from 'util/mm.jsx';
const _mm = new Mutil();

class User{
	login(loginInfo){
		return	_mm.request({
				type:'post',
				url : '/manage/user/login.do',
				data:loginInfo
			})
	}
}
export default User;

  

	onSubmit(){
		_user.login({
			username:this.state.username,
			password:this.state.password
		})
		.then((res)=>{

		}, (err)=>{

		})
	}

  

 

猜你喜欢

转载自www.cnblogs.com/ipoodle/p/9751260.html