Angular: invocando al backend
Ahora debemos modificar nuestro servicio para que no utilice data mock sino que invoque al backend express que habíamos definido anteriormente.
Para eso usaremos el modulo angular/http
. Comenzaremos instalandolo mediante npm
$ npm install @angular/http --save
Luego en bootstrap.js
importaremos dicho modulo y lo registraremos como dependencia del nuestro.
... import { HttpModule } from '@angular/http'; import 'rxjs/add/operator/toPromise' ...
src/frontend/bootstrap.js
Primera llamada HTTP
Ahora estamos listos para modificar el código de nuestro servicio para que, en lugar de crear la colección de posts de la siguiente forma:
src/frontend/app/sevices/post.service.js
Para que reciba un servicio Http
y haga una request al mismo para recuperar los datos.
src/frontend/app/sevices/post.service.js
Desde luego tuvimos que importar el servicio Http
por medio de import { Http } from '@angular/http'
y registrar el tipo del parametro http
del constructor por medio de:
PostService.parameters = [
Http
]
Ahora solo resta cambiar el método create para que delegue en el backend.
src/frontend/app/sevices/post.service.js
Algunos datos utiles
JSON.stringify(post)
- escribe un json a partir del objeto post envíado.{ headers:{'Content-Type': 'application/json'}}
- instruye a angular http service de envíar el headerContent-Type: application/json
como parte de la request. Dicho header es necesario para que el modulo bodyParser de express interprete correctamente que el cuerpo se trata de un json y lo parsee correctamente.