unidades:03_servicios:02_http
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| unidades:03_servicios:02_http [2014/07/25 10:57] – admin | unidades:03_servicios:02_http [2014/08/30 13:26] (actual) – admin | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| ====== 3.2 $http ====== | ====== 3.2 $http ====== | ||
| - | El servicio [[https:// | + | El servicio [[https:// |
| <note important> | <note important> | ||
| Como en otros apartados de AngularJS es obligatorio usar las funciones de AngularJS como '' | Como en otros apartados de AngularJS es obligatorio usar las funciones de AngularJS como '' | ||
| </ | </ | ||
| + | |||
| + | |||
| + | <note tip> | ||
| + | Si quieres saber mas sobre JSON puede ir al tema [[unidades: | ||
| + | Y si quieres saber sobre HTTP puede ir al tema [[unidades: | ||
| + | </ | ||
| + | |||
| + | Para explicar el servicio de '' | ||
| + | |||
| + | El contenido del fichero '' | ||
| + | <sxh js; | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <note tip> | ||
| + | No está el campo " | ||
| + | </ | ||
| + | ====== La instancia ====== | ||
| + | Lo primero que tenemos que hacer es obtener una referencia al servicio '' | ||
| + | |||
| + | <sxh js; | ||
| + | var app=angular.module(" | ||
| + | |||
| + | app.controller(" | ||
| + | |||
| + | |||
| + | }]); | ||
| + | </ | ||
| + | |||
| + | //No hemos mostrado el resto de líneas del controlador para mejorar la legibilidad// | ||
| + | |||
| + | |||
| + | * Línea 3: Vemos cómo ahora se inyecta el nuevo servicio , '' | ||
| + | |||
| + | |||
| ====== config ====== | ====== config ====== | ||
| - | [[https:// | + | [[https:// |
| + | |||
| + | Veamos ahora alguna de las propiedades: | ||
| + | * **method**: El método HTTP para hacer la petición. Sus posibles valores son: '' | ||
| + | * **url**: La URL de donde queremos obtener los datos. | ||
| + | * **data**: Si usamos el método '' | ||
| + | * **params**: Un objeto que se pondrá como parámetros de la URL. | ||
| <note tip> | <note tip> | ||
| - | El objeto '' | + | El objeto '' |
| </ | </ | ||
| + | |||
| + | Ahora vamos a hacer una llamada mediante '' | ||
| + | |||
| + | |||
| + | <sxh js; | ||
| + | var app=angular.module(" | ||
| + | |||
| + | app.controller(" | ||
| + | var config={ | ||
| + | method:" | ||
| + | url:" | ||
| + | } | ||
| + | |||
| + | }]); | ||
| + | </ | ||
| + | |||
| + | //No hemos mostrado el resto de líneas del controlador para mejorar la legibilidad// | ||
| + | |||
| + | |||
| + | * Línea 4: Creamos el objeto JavsScript llamado '' | ||
| + | * Línea 5: Añadimos la propiedad '' | ||
| + | * Línea 6: Indicamos la url al fichero '' | ||
| + | |||
| + | ====== respuesta ====== | ||
| + | Teniendo el objeto '' | ||
| + | |||
| + | <sxh js; | ||
| + | var app=angular.module(" | ||
| + | |||
| + | app.controller(" | ||
| + | var config={ | ||
| + | method:" | ||
| + | url:" | ||
| + | } | ||
| + | | ||
| + | var response=$http(config); | ||
| + | |||
| + | }]); | ||
| + | </ | ||
| + | //No hemos mostrado el resto de líneas del controlador para mejorar la legibilidad// | ||
| + | |||
| + | * Línea 9: Se llama al servicio '' | ||
| + | |||
| + | <note important> | ||
| + | Realmente no nos responde con un objeto '' | ||
| + | </ | ||
| + | |||
| + | ====== Los datos ====== | ||
| + | Si todo ha funcionado correctamente podremos obtener el objeto JavaScript correspondiente al String JSON que nos han pasado. Para ello llamaremos a la función '' | ||
| + | |||
| + | La función que le pasaremos tendrá 4 argumentos que son los siguientes: | ||
| + | * **data**: Un objeto JavaScript correspondiente a los datos JSON que ha recibido | ||
| + | * **status**: Es el estado HTTP que ha retornado. Su valor siempre será entre 200 y 299 ya que si se llama a esta función significa que la petición ha tenido éxito. | ||
| + | * **headers**: | ||
| + | * **config**: El mismo objeto '' | ||
| + | |||
| + | |||
| + | <note tip> | ||
| + | Recuerda que '' | ||
| + | </ | ||
| + | |||
| + | <sxh js; | ||
| + | var app=angular.module(" | ||
| + | |||
| + | app.controller(" | ||
| + | var config={ | ||
| + | method:" | ||
| + | url:" | ||
| + | } | ||
| + | | ||
| + | var response=$http(config); | ||
| + | | ||
| + | response.success(function(data, | ||
| + | $scope.seguro=data; | ||
| + | }); | ||
| + | |||
| + | }]); | ||
| + | </ | ||
| + | //No hemos mostrado el resto de líneas del controlador para mejorar la legibilidad// | ||
| + | |||
| + | * Línea 11: Llamamos a la función '' | ||
| + | * Línea 12: Asignamos los datos del servidor a nuestro objeto '' | ||
| + | |||
| + | <note important> | ||
| + | La línea 12 tiene mucha más importancia de la que parece, sólo que AngularJS nos lo hace todo muy sencillo. | ||
| + | Como ya hemos dicho, el parámetro '' | ||
| + | |||
| + | El que se actualice automáticamente el modelo es lo que hace que tengamos que usar '' | ||
| + | |||
| + | </ | ||
| + | |||
| + | <note tip> | ||
| + | Recuerda que la llamada a nuestra función de la línea 11 se hace de forma asíncrona tal y como se hacen las peticiones AJAX | ||
| + | </ | ||
| + | |||
| + | ====== El error ====== | ||
| + | Si ocurre algún error, es decir si se retorna un 400, 500 ,etc, no se llamará a la función de '' | ||
| + | |||
| + | No vamos a extendernos mas en esta función ya que funciona igual que '' | ||
| + | <sxh js; | ||
| + | var app=angular.module(" | ||
| + | |||
| + | app.controller(" | ||
| + | var config={ | ||
| + | method:" | ||
| + | url:" | ||
| + | } | ||
| + | | ||
| + | var response=$http(config); | ||
| + | | ||
| + | response.success(function(data, | ||
| + | $scope.seguro=data; | ||
| + | }); | ||
| + | | ||
| + | response.error(function(data, | ||
| + | alert(" | ||
| + | }); | ||
| + | | ||
| + | |||
| + | }]); | ||
| + | </ | ||
| + | //No hemos mostrado el resto de líneas del controlador para mejorar la legibilidad// | ||
| + | |||
| + | * Línea 15: Llamamos a la función '' | ||
| + | * Línea 16: Mostramos al usuario un mensaje de error indicando el valor del estado HTTP. | ||
| + | |||
| + | <note tip> | ||
| + | Hacer un '' | ||
| + | </ | ||
| + | |||
| + | ====== Uniendo todo el código ====== | ||
| + | Ya hemos visto cómo funciona pero el código nos ha quedado un poco largo. Lo hemos hecho así para ir explicando todo poco a poco, pero vamos a condensarlo todo para que quede más corto y legible. | ||
| + | |||
| + | Un detalle a comentar antes es que las funciones '' | ||
| + | |||
| + | El código finalmente quedaría así: | ||
| + | |||
| + | <sxh js; | ||
| + | var app=angular.module(" | ||
| + | |||
| + | app.controller(" | ||
| + | |||
| + | $http({ | ||
| + | method: ' | ||
| + | url: ' | ||
| + | }).success(function(data, | ||
| + | $scope.seguro=data; | ||
| + | }).error(function(data, | ||
| + | alert(" | ||
| + | }); | ||
| + | | ||
| + | |||
| + | }]); | ||
| + | </ | ||
| + | //No hemos mostrado el resto de líneas del controlador para mejorar la legibilidad// | ||
| + | |||
| + | Vemos cómo hemos puesto la configuración directamente en la llamada en vez de crear un objeto '' | ||
| + | |||
| + | |||
| + | <note warning> | ||
| + | El poner en el controlador la llamada a '' | ||
| + | |||
| + | El ejemplo correcto se explicará en [[unidades: | ||
| + | </ | ||
| + | ====== Ejemplo ====== | ||
| + | Finalmente el controlador completo quedaría de la siguiente forma: | ||
| + | |||
| + | <sxh js; | ||
| + | var app=angular.module(" | ||
| + | | ||
| + | app.controller(" | ||
| + | $scope.seguro={ | ||
| + | nif:"", | ||
| + | nombre:"", | ||
| + | ape1:"", | ||
| + | edad: | ||
| + | sexo:"", | ||
| + | casado: | ||
| + | numHijos: | ||
| + | embarazada: | ||
| + | coberturas: { | ||
| + | oftalmologia: | ||
| + | dental: | ||
| + | fecundacionInVitro: | ||
| + | }, | ||
| + | enfermedades: | ||
| + | corazon: | ||
| + | estomacal: | ||
| + | rinyones: | ||
| + | alergia: | ||
| + | nombreAlergia:"" | ||
| + | }, | ||
| + | fechaCreacion: | ||
| + | } | ||
| + | | ||
| + | $log.debug(" | ||
| + | |||
| + | $http({ | ||
| + | method: ' | ||
| + | url: ' | ||
| + | }).success(function(data, | ||
| + | $scope.seguro=data; | ||
| + | }).error(function(data, | ||
| + | alert(" | ||
| + | }); | ||
| + | | ||
| + | }]); | ||
| + | </ | ||
| + | |||
| + | Como ya hemos explicado hemos añadido en la línea 3 la referencia al objeto '' | ||
| + | |||
| + | {{url> | ||
| + | |||
| + | ====== Referencias ====== | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
unidades/03_servicios/02_http.1406278664.txt.gz · Última modificación: por admin
