2016-06-28 1 views
0

두 개의 HTTP 요청이 있습니다. 1. 게시 방법 2. 가져 오기 방법.

두 개의 HTTP 요청에서 데이터를 가져와야합니다.

내 코드를 추가했습니다. 그러나 나는 이것이 올바른 접근법이 아니라고 생각합니다. 제발 제안 해주세요.

질문 1 :

두 번 동기식 호출 후. 컨트롤러

(function() { 
    'use strict'; 
    angular.module('myApp').controller('loginController', loginController); 
    loginController.$inject = ['$auth', '$http', '$location', '$scope', '$window', '$rootScope', 'commonService', '$q', '$localStorage']; 
    // inject an auth service here! 
    function loginController($auth, $http, $location, $scope, $window, $rootScope, commonService, $q, $localStorage) { 
     commonService.getHostDetails().then(function(data) { 
      commonService.login().then(function(data) { 

      }).catch(function(data) { 
       alert('Sorry ! test function faild'); 
      }); 
     }).catch(function(data) { 
      alert('Sorry ! login function faild'); 
     }); 
    }; 

})(); 

서비스 코드 :

angular.module('myApp').factory('commonService', ['$q', '$timeout', '$http', 
function($q, $timeout, $http, commonService) { 

    return ({ 
     login : login, 
     test : test, 
    }); 

    function login() { 
     // create a new instance of deferred 
     var deferred = $q.defer(); 
     $http.get('host.json') 
     // handle success 
     .success(function(data, status) { 
      deferred.resolve(data); 
     }) 
     // handle error 
     .error(function(data) { 
      deferred.reject(data); 

     }); 
     // return promise object 
     return deferred.promise; 

    } 

    function test(formData) { 
     // create a new instance of deferred 
     var deferred = $q.defer(); 
     console.log("in service"); 
     console.log(formData); 
     $http.post('/api/test', formData, { 
      headers : { 
       'Content-Type' : 'application/json' 
      } 
     }) 
     // handle success 
     .success(function(data) { 
      deferred.resolve(data); 
     }) 
     // handle error 
     .error(function(data) { 
      deferred.reject(data); 

     }); 

     // return promise object 
     return deferred.promise; 
    } 

}]); 

질문 -2.

또한 두 개의 http 요청은 두 개의 API에 따라 달라집니다. 첫 번째 http 요청 데이터가 두 번째 API로 파싱되어야합니다.

+0

처럼 뭔가를 할 수 해결해야 /www.npmjs.com/package/angular-httpshooter), 더 나은 제어로 거의 같은 일을한다. – Siddharth

답변

1

전화를 연결하는 좋은 방법입니다./: 두 개의 통화를하면 아무것도 할 수 있기 전에, 어쩌면 당신이 내 [각도-httpshooter] (HTTPS를 체크 아웃 할 것이다

$http.post("your api").then(function(response) { 
    //do something 
    return response.data; 
}).then(function(data) { 

    return $http.get("you other api") 
}).then(response_from_second_api) { 

}); 

는 당신이

var promise1 = $http.get(""); 
var promise2 = $http.get(""); 

$q.all([promise1,promise2]).then(values) { 
    var value_of_promise1 = values[0]; 
    var value_of_promose2 = values[1]; 
}); 
+0

우리는 에러 – RSKMR

+0

을 어떻게 처리 할 수 ​​있는지'$ http(). then(). then(). catch (오류 => ...)' – Daniel