내장된 $http 서비스를 사용하여 외부 세계와 직접 통신할 수 있습니다. $http 서비스는 단순히 브라우저의 기본 XMLHttpRequest 객체를 캡슐화합니다.
1.체인콜
$http 서비스는 하나의 매개변수만 허용할 수 있는 함수입니다. 이 매개변수는 HTTP 요청을 생성하는 데 사용되는 구성 콘텐츠가 포함된 개체입니다. 이 함수는 성공과 오류라는 두 가지 메서드가 있는 Promise 개체를 반환합니다.
$http({ url:'data.json', method:'GET' }).success(function(data,header,config,status){ //响应成功 }).error(function(data,header,config,status){ //处理响应失败 });
2. Promise 객체 반환
var promise=$http({ method:'GET', url:"data.json" });
$http 메소드는 promise 객체를 반환하므로 응답이 반환될 때 then 메소드를 사용하여 콜백을 처리할 수 있습니다. then 메소드를 사용하면 해당 객체의 성공 또는 실패 정보를 나타내는 특수 매개변수를 얻을 수 있으며 두 개의 선택적 함수를 매개변수로 사용할 수도 있습니다. 또는 대신 성공 및 오류 콜백을 사용할 수 있습니다.
promise.then(function(resp){ //resp是一个响应对象 },function(resp){ //带有错误信息的resp });
또는 이:
promise.success(function(data,status,config,headers){ //处理成功的响应 }); promise.error(function(data,status,hedaers,config){ //处理失败后的响应 });
then() 메소드와 다른 두 메소드의 주요 차이점은 완전한 응답 객체를 수신하는 반면, Success() 및 error()는 응답 객체를 파괴한다는 것입니다.
3.빠른구매요청
①$http.get('/api/users.json');
get() 메소드는 HttpPromise 객체를 반환합니다.
예를 들어 delete/head/jsonp/post/put을 보낼 수도 있습니다. 함수에서 허용되는 특정 매개변수는 148페이지를 참조하세요
② 다시 jsonp 요청을 보내는 예를 들어보겠습니다. JSONP 요청을 보내려면 URL에 JSON_CALLBACK이라는 단어가 포함되어야 합니다.
jsonp(url,config) 여기서 config는 선택 사항입니다
var promise=$http.jsonp("/api/users.json?callback=JSON_CALLBACK");
4. $http를 함수로 사용할 수도 있습니다. 이 경우 XHR 개체 구성 방법을 설명하기 위해 설정 개체를 전달해야 합니다.
$http({ method:'GET', url:'/api/users.json', params:{ 'username':'tan' });
설정 개체에는 다음과 같은 기본 키가 포함될 수 있습니다.
①방법
다음이 가능합니다: GET/DELETE/HEAD/JSONP/POST/PUT
②url: 절대 또는 상대 요청 대상
③params(문자열 맵 또는 객체)
이 키의 값은 쿼리 문자열로 변환되어 URL에 추가되는 문자열 맵 또는 개체입니다. 값이 문자열이 아닌 경우 JSON으로 직렬화됩니다.
예:
//参数会转为?name=ari的形式 $http({ params:{'name':'ari'} });
④데이터(문자열 또는 객체)
이 개체에는 메시지 본문으로 서버에 전송될 데이터가 포함되어 있습니다. 일반적으로 POST 요청을 보낼 때 사용됩니다.
AngularJS 1.3부터는 POST 요청으로 바이너리 데이터를 보낼 수도 있습니다. Blob 개체를 보내려면 data 매개 변수를 사용하여 간단히 전달하면 됩니다.
예:
var blob=new Blob(['Hello world'],{type:'text/plain'}); $http({ method:'POST', url:'/', data:blob });
4. 응답 객체
AngularJS가 then() 메서드에 전달한 응답 개체에는 네 가지 속성이 포함되어 있습니다.
데이터
이 데이터는 변환된 응답 본문을 나타냅니다(변환이 정의된 경우)
상태
응답 HTTP 상태 코드
헤더
이 함수는 헤더 정보의 getter 함수로, 해당 이름 값을 얻기 위해 매개변수를 받을 수 있습니다
예를 들어 다음 코드를 사용하여 X-Auth-ID 값을 가져옵니다.
$http({ method: 'GET', url: '/api/users.json' }).then (resp) { // 读取X-Auth-ID resp.headers('X-Auth-ID'); });
구성
이 개체는 원래 요청을 생성하는 데 사용되는 완전한 설정 개체입니다.
상태텍스트(문자열)
이 문자열은 응답의 HTTP 상태 텍스트입니다.
5. HTTP 요청 캐싱
기본적으로 $http 서비스는 요청을 로컬로 캐시하지 않습니다. 개별 요청을 할 때 부울 값이나 캐시 인스턴스를 $http 요청에 전달하여 캐싱을 활성화할 수 있습니다.
$http.get('/api/users.json',{ cache: true }) .success(function(data) {}) .error(function(data) {});
요청이 처음 전송되면 $http 서비스는 /api/users.json에 GET 요청을 보냅니다. 동일한 GET 요청이 두 번째로 전송되면 $http 서비스는 실제로 HTTP GET 요청을 전송하지 않고 캐시에서 요청 결과를 검색합니다.
이 예에서는 캐싱이 활성화되어 있으므로 AngularJS는 기본적으로 $cacheFactory를 사용합니다. 이 서비스는 시작 시 AngularJS에 의해 자동으로 생성됩니다.
AngularJS에서 사용하는 캐시에 대해 더 많은 사용자 지정 제어를 원하는 경우 true 대신 사용자 지정 캐시 인스턴스를 요청에 전달할 수 있습니다.
AngularJS $http 지식에 대해 알려드리겠습니다.
AngularJS $http는 웹 서버의 데이터를 읽는 서비스입니다.
$http.get(url)은 서버 데이터를 읽는 데 사용되는 함수입니다.
AngularJS 예
<div ng-app="myApp" ng-controller="customersCtrl"> <ul> <li ng-repeat="x in names"> {{ x.Name + ', ' + x.Country }} </li> </ul> </div> <script> var app = angular.module('myApp', []); app.controller('customersCtrl', function($scope, $http) { $http.get("http://www.runoob.com/try/angularjs/data/Customers_JSON.php") .success(function(response) {$scope.names = response.records;}); }); </script>