封装$http、做权限时拦截403等状态及获取验证码倒计时:
- 拦截接口返回状态
var app = angular.module('app'); app.factory('UserInterceptor', ["$q","$rootScope", "$location", function ($q, $rootScope, $location,$localStorage) { return { request:function(config){ config.headers["Authorization"] = 'Bearer ' + localStorage['token']; var urlArray = config.url.split("/") if(urlArray.indexOf("api") > -1 && config.method == "GET"){ if(config.url.indexOf("?") > -1){ config.url = config.url+"&time="+new Date().getTime(); }else{ config.url = config.url+"?time="+new Date().getTime(); } } return config; }, responseError: function (response) { switch(response.status) { case 401: localStorage.clear(); $location.path("/login"); break; case 403: $location.path("/login"); break; } } }; }]);
response.status为返回状态码
- 封装$http
app.factory('ResourceGet',function($http,$q){ var service = {} service.callBack = function(action,params){ var url = ' http://10.0.10.201:8080/'; var deferred = $q.defer(); $http({ method: 'GET', url: url+action, params: params }).success(function(data){ deferred.resolve(data); }) return deferred.promise; } return service }); app.factory('ResourcePut', function ($http, $q) { var service = {} service.callBack = function ( action, params ) { var url = 'http://10.0.10.201:8080/' var deferred = $q.defer() $http({ method: 'PUT', url: url + action, data: params, headers : {'Content-Type': 'application/json; charset=utf-8'} }).success(function (data) { deferred.resolve(data) }) return deferred.promise } return service }) app.factory('ResourcePost', function ($http, $q) { var service = {} service.callBack = function ( action, params ) { var url = 'http://10.0.10.201:8080/' var deferred = $q.defer() $http({ method: 'POST', url: url + action, data: params, headers : {'Content-Type': 'application/json; charset=utf-8'} }).success(function (data) { deferred.resolve(data) }) return deferred.promise } return service }) app.factory('ResourceDelete', function ($http, $q) { var service = {} service.callBack = function (action, params) { var url = 'http://10.0.10.201:8080/' var deferred = $q.defer() $http({ method: 'DELETE', // headers : {'Content-Type': 'application/x-www-form-urlencoded'}, url: url + action }).success(function (data) { deferred.resolve(data) }) return deferred.promise } return service })
- 修改跨域问题
app.config(['$httpProvider', function($httpProvider) { $httpProvider.defaults.withCredentials = true; }]);
- 获取验证码倒计时
app.service('WaitSecond',function(){ var wait = 60; var t = this; this.waitTime = function(code){ if(wait == 0){ $("#"+code).html('获取验证码'); $("#"+code).removeAttr("disabled"); wait = 60 }else{ console.log(code); $("#"+code).html(function(){ return wait + '秒' }).attr('disabled','true'); wait--; setTimeout(function () { t.waitTime(code); }, 1000); } } })
html:
<button id="code" ng-click="register.getCode('code')" class="ng-binding">获取验证码</button>
controller:
WaitSecond.waitTime(id);
5.统一接口定义全局变量
app.constant('apiImg','http://10.0.10.200:8080/SeeMeInterface/img/uploadImg')