New Dart prose, update Dart and Ts code + guide/server-communication/ts: update to docs and example code + guide/server-communication/dart: new prose, update example code + ignore all npm-debug.logs + make Jade ul li TOC elements more compact.
		
			
				
	
	
		
			83 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| extends ../../../ts/latest/guide/server-communication.jade
 | |
| 
 | |
| block includes
 | |
|   include ../_util-fns
 | |
| 
 | |
| block http-providers
 | |
|   //- TODO(chalin): mention the Angular transformer resolved_identifiers.
 | |
|   //- Maybe not yet at this point in the chapter.
 | |
| 
 | |
| block getheroes-and-addhero
 | |
|   :marked
 | |
|     The hero service `getHeroes()` and `addHero()` asynchronous methods return the
 | |
|     [`Future`](https://api.dartlang.org/stable/1.16.0/dart-async/Future-class.html)
 | |
|     values of the current hero list and the newly added hero,
 | |
|     respectively. The hero list component methods of the same name specifying
 | |
|     the actions to be taken when the asynchronous method calls succeed or fail.
 | |
| 
 | |
|     For more information about `Future`s, consult any one
 | |
|     of the [articles](https://www.dartlang.org/articles/) on asynchronous
 | |
|     programming in Dart, or the tutorial on 
 | |
|     [_Asynchronous Programming: Futures_](https://www.dartlang.org/docs/tutorials/futures/).
 | |
| 
 | |
| block http-client-service
 | |
|   :marked
 | |
|     The imported `BrowserClient` client service gets
 | |
|     [injected](dependency-injection.html) into the `HeroService` constructor.
 | |
|     Note that `BrowserClient` is not part of the Angular core. 
 | |
|     It's an optional service provided by the Dart 
 | |
|     [`http` package](https://pub.dartlang.org/packages/http).
 | |
| 
 | |
| block rxjs
 | |
|   //- N/A
 | |
| 
 | |
| block non-success-status-codes
 | |
|   :marked
 | |
|     Because a status code outside the 200-299 range _is an error_ from the
 | |
|     application point of view, we test for this condition and throw an
 | |
|     exception when detected.
 | |
| 
 | |
| block parse-json
 | |
|   :marked
 | |
|     The response data are in JSON string form.
 | |
|     We must parse that string into JavaScript objects which we do by calling
 | |
|     the `JSON.decode()` method from the `dart:convert` library.
 | |
| 
 | |
| block error-handling
 | |
|   //- TODO: describe `_handleError`?
 | |
| 
 | |
| block hlc-error-handling
 | |
|   :marked
 | |
|     Back in the `HeroListComponent`, we wrapped our call to
 | |
|     `#{_priv}heroService.getHeroes()` in a `try` clause. When an exception is
 | |
|     caught, the `errorMessage` variable — which we've bound conditionally in the
 | |
|     template — gets assigned to.
 | |
| 
 | |
| block hero-list-comp-add-hero
 | |
|   :marked
 | |
|     Back in the `HeroListComponent`, we see that *its* `addHero()`
 | |
|     awaits for the *service's* asynchronous `addHero()` to return, and when it does,
 | |
|     the new hero is added to the `heroes` list for presentation to the user.
 | |
|   +makeExample('server-communication/ts/app/toh/hero-list.component.ts', 'addHero', 'app/toh/hero-list.component.ts (addHero)')(format=".")
 | |
| 
 | |
| block promises
 | |
|   //- N/A
 | |
| 
 | |
| block wikipedia-jsonp+
 | |
|   :marked
 | |
|     Wikipedia offers both `CORS` and `JSONP` search APIs.
 | |
|   .alert.is-important
 | |
|     :marked
 | |
|       The remaining content of this section is coming soon.
 | |
|       In the meantime, consult the 
 | |
|       [example sources](https://github.com/angular-examples/server-communication)
 | |
|       to see how to access Wikipedia via its `JSONP` API.
 | |
| 
 | |
| block redirect-to-web-api
 | |
|   :marked
 | |
|     To achieve this, we have Angular inject an in-memory web API server
 | |
|     instance as a provider for the `BrowserClient`. This is possible because
 | |
|     the in-memory web API server class extends `BrowserClient`. Here are the
 | |
|     pertinent details, excerpt from `TohComponent`:
 | |
|   +makeExample('server-communication/ts/app/toh/toh.component.ts', 'in-mem-web-api', 'app/toh.component.ts (excerpt)')(format=".")
 |