最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

angular2中Http請求原理與用法詳解

 更新時間:2018年01月11日 12:23:26   作者:CPlusPlusLove  
這篇文章主要介紹了angular2中Http請求原理與用法,結(jié)合實例形式分析了AngularJS中http相關(guān)模塊實現(xiàn)http服務請求與相應的相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了angular2中Http請求原理與用法。分享給大家供大家參考,具體如下:

提供HTTP服務

HttpModule并不是Angular的核心模塊。 它是Angular用來進行Web訪問的一種可選方式,并位于一個名叫@angular/http的獨立附屬模塊中.

編輯app.module.ts

import { HttpModule, JsonpModule } from '@angular/http';
@NgModule({
 imports: [
  HttpModule,
  JsonpModule
 ],
})

angular-in-memory-web-api

npm install angular-in-memory-web-api --save-dev

This in-memory web api service processes an HTTP request and returns an Observable of HTTP Response object in the manner of a RESTy web api.

:base/:collectionName/:id?
GET api/heroes     // all heroes
GET api/heroes/42    // the character with id=42
GET api/heroes?name=^j // 'j' is a regex; returns heroes whose name starting with 'j' or 'J'
GET api/heroes.json/42 // ignores the ".json"

之前測試時用的app/mock/user_data_memory_mock.ts數(shù)據(jù)

import {User} from '../model/User';
import { InMemoryDbService } from 'angular-in-memory-web-api';
export class UserDataMemoryMock implements InMemoryDbService{
 createDb() {
  const users: User[] = [
    new User('chenjianhua_a', 21, '2290910211@qq.com', '123456'),
    new User('chenjianhua_b', 22, '2290910211@qq.com', '123456'),
    new User('chenjianhua_c', 23, '2290910211@qq.com', '123456'),
    new User('chenjianhua_d', 24, '2290910211@qq.com', '123456'),
    new User('chenjianhua_e', 25, '2290910211@qq.com', '123456'),
    new User('chenjianhua_f', 26, '2290910211@qq.com', '123456'),  
  ];
  return {users};
 }
}

編輯app.module.ts

import { InMemoryWebApiModule } from 'angular-in-memory-web-api';
import { UserDataMemoryMock } from './mock/user_data_memory_mock';
@NgModule({
 imports: [
  InMemoryWebApiModule.forRoot(UserDataMemoryMock),
 ]
})

導入InMemoryWebApiModule并將其加入到模塊的imports數(shù)組。 InMemoryWebApiModule將Http客戶端模擬的后端服務
forRoot()配置方法需要UserMemoryMockService類實例,用來向內(nèi)存數(shù)據(jù)庫填充數(shù)據(jù)

編輯app/service/user.restful.service.ts

import {Injectable} from '@angular/core';
import { Headers, Http } from '@angular/http';
import 'rxjs/add/operator/toPromise';
import { User } from '../model/User';
import { Logger } from './logger.service';
@Injectable()
export class UserService {
  private USERURL = 'api/users';
  private headers = new Headers({'Content-Type': 'application/json'});
  constructor(private Log: Logger,
  private http: Http) { }
  getUserByName(name: string): Promise<User> {
  const url = `${this.USERURL}/?name=${name}`;
  return this.http.get(url)
    .toPromise()
    .then(response => response.json().data as User)
    .catch(this.handleError);
  }
  getUsers(): Promise<User[]> {
    console.log('Get User!');
    return this.http.get(this.USERURL)
    .toPromise()
    .then(response => response.json().data as User[])
    .catch(this.handleError);
  }
  create(name: string): Promise<User> {
  return this.http
    .post(this.USERURL, JSON.stringify({name: name}), {headers: this.headers})
    .toPromise()
    .then(res => res.json().data as User)
    .catch(this.handleError);
  }
  private handleError(error: any): Promise<any>{
    console.log('An error occurred :', error);
    return Promise.reject(error.message);
  }
}

編輯app/components/app-loginform/app.loginform.ts

import { Component, OnInit } from '@angular/core';
import { Logger } from '../../service/logger.service';
import { UserService } from '../../service/user.restful.service';
import { User } from '../../model/User';
import { Subject } from 'rxjs/Subject';
@Component({
 selector: 'app-loginform',
 templateUrl: './app.loginform.html',
 styleUrls: ['./app.loginform.css'],
 providers: [
  Logger,
  UserService
 ]
})
export class AppLoginFormComponent implements OnInit {
  users: User[];
  submitted = false;
  model = new User('1', 'fangfang', 22, '2290910211@qq.com', '123456');
  constructor(
    private Log: Logger,
    private userService: UserService
  ){}
  ngOnInit(): void{
    this.userService
    .getUsers()
    .then( users => this.users = users);
  }
  onSubmit(): void {
    this.userService.getUserByName(this.model.name)
    .then( user => {
      console.log('user.name', user[0].name);
      console.log('user.password', user[0].password);
      if(user[0].name === this.model.name
      && user[0].password === this.model.password){
        this.Log.log('login success!');
        this.submitted = true;
      }else{
        this.Log.log('login failed!');
        this.submitted = false;
      }
    })
    .catch(errorMsg => console.log(errorMsg));
  }
}

HTTP Promise

Angular 的http.get返回一個 RxJS 的Observable對象。 Observable是一個管理異步數(shù)據(jù)流的強力方式。

現(xiàn)在,我們先利用toPromise方法把Observable直接轉(zhuǎn)換成Promise對象

更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《AngularJS指令操作技巧總結(jié)》、《AngularJS入門與進階教程》及《AngularJS MVC架構(gòu)總結(jié)

希望本文所述對大家AngularJS程序設計有所幫助。

相關(guān)文章

  • 詳解Angular5/Angular6項目如何添加熱更新(HMR)功能

    詳解Angular5/Angular6項目如何添加熱更新(HMR)功能

    這篇文章主要介紹了詳解Angular5/Angular6項目如何添加熱更新(HMR)功能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • Angular8引入百度Echarts進行圖表分析的實現(xiàn)代碼

    Angular8引入百度Echarts進行圖表分析的實現(xiàn)代碼

    這篇文章主要介紹了Angular8引入百度Echarts進行圖表分析的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Angularjs 創(chuàng)建可復用組件實例代碼

    Angularjs 創(chuàng)建可復用組件實例代碼

    這篇文章主要介紹了Angularjs 創(chuàng)建可復用組件實例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 創(chuàng)建你的第一個AngularJS應用的方法

    創(chuàng)建你的第一個AngularJS應用的方法

    這篇文章主要介紹了創(chuàng)建你的第一個AngularJS應用的方法,AngularJS是一個非常具有人氣的JavaScript框架,需要的朋友可以參考下
    2015-06-06
  • angular簡介和其特點介紹

    angular簡介和其特點介紹

    這篇文章主要介紹了angular簡介和其特點介紹,本文講解了關(guān)于和jquery的比較、關(guān)于適用場合、關(guān)于UI的結(jié)合、關(guān)于angularjs的特點等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • angular6.0開發(fā)教程之如何安裝angular6.0框架

    angular6.0開發(fā)教程之如何安裝angular6.0框架

    這篇文章主要介紹了angular6.0開發(fā)教程之如何安裝angular6.0框架,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • AngularJS入門教程之路由與多視圖詳解

    AngularJS入門教程之路由與多視圖詳解

    本文主要介紹AngularJS 路由與多視圖詳解,這里整理了相關(guān)資料及示例代碼,詳細說明了在開發(fā)過程中如何應用,有興趣的朋友可以看下
    2016-08-08
  • 徹底學會Angular.js中的transclusion

    徹底學會Angular.js中的transclusion

    這篇文章主要給大家介紹Angular.js中transclusion的相關(guān)資料,希望通過這一篇文章大家能夠弄懂Angular.js中的transclusion,文中介紹的很詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • Angular2環(huán)境搭建具體操作步驟(推薦)

    Angular2環(huán)境搭建具體操作步驟(推薦)

    下面小編就為大家?guī)硪黄狝ngular2環(huán)境搭建具體操作步驟(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Angular2關(guān)于@angular/cli默認端口號配置的問題

    Angular2關(guān)于@angular/cli默認端口號配置的問題

    本篇文章主要介紹了Angular2關(guān)于@angular/cli默認端口號配置的問題,非常具有實用價值,需要的朋友可以參考下
    2017-07-07

最新評論

湖北省| 赫章县| 济宁市| 光山县| 鹤峰县| 仲巴县| 略阳县| 伊宁市| 嵩明县| 海安县| 浦北县| 天等县| 读书| 专栏| 烟台市| 三都| 台前县| 静乐县| 桃江县| 中宁县| 旬邑县| 利辛县| 阆中市| 嘉祥县| 原平市| 平安县| 二连浩特市| 棋牌| 凌海市| 巴南区| 嘉荫县| 龙南县| 磐安县| 庆云县| 东阿县| 淮阳县| 沂南县| 双柏县| 芮城县| 双桥区| 嘉峪关市|