ng-book札記——HTTP

来源:https://www.cnblogs.com/kenwoo/archive/2018/04/21/8904188.html
-Advertisement-
Play Games

Angular擁有自己的HTTP庫,可以用於調用外部API。 在JavaScript世界里有三種方式可以實現非同步請求,Callback,Promise與Observable。Angular傾向於使用Observable方式。 HTTP庫屬於Angular中獨立的模塊,這意味著當使用時需要導入它。 舉 ...


Angular擁有自己的HTTP庫,可以用於調用外部API。

在JavaScript世界里有三種方式可以實現非同步請求,Callback,Promise與Observable。Angular傾向於使用Observable方式。

HTTP庫屬於Angular中獨立的模塊,這意味著當使用時需要導入它。

import {
    // The NgModule for using @angular/http
    HttpModule,

    // the class constants
    Http,
    Response,
    RequestOptions,
    Headers
} from '@angular/http';

舉個基本的HTTP請求例子:

import { Component, OnInit } from '@angular/core';
import {Http, Response} from '@angular/http';

@Component({
    selector: 'app-simple-http',
    templateUrl: './simple-http.component.html'
})
export class SimpleHttpComponent implements OnInit {
    data: Object;
    loading: boolean;

    constructor(private http: Http) {
    }

    ngOnInit() {
    }

    makeRequest(): void {
        this.loading = true;
        this.http.request('http://jsonplaceholder.typicode.com/posts/1')
        .subscribe((res: Response) => {
            this.data = res.json();
            this.loading = false;
        });
    }
}

http.request返回一個Observable,通過subscribe訂閱變化。

如果是想要用GET方式請求API的話,可以使用HTTP庫中的http.get方法。

@Injectable()
export class YouTubeSearchService {
    constructor(private http: Http,
    @Inject(YOUTUBE_API_KEY) private apiKey: string,
    @Inject(YOUTUBE_API_URL) private apiUrl: string) {
}

    search(query: string): Observable<SearchResult[]> {
        const params: string = [
        `q=${query}`,
        `key=${this.apiKey}`,
        `part=snippet`,
        `type=video`,
        `maxResults=10`
        ].join('&');
        const queryUrl = `${this.apiUrl}?${params}`;
        return this.http.get(queryUrl)
            .map((response: Response) => {
                return (<any>response.json()).items.map(item => {
                    // console.log("raw item", item); // uncomment if you want to debug
                        return new SearchResult({
                        id: item.id.videoId,
                        title: item.snippet.title,
                        description: item.snippet.description,
                        thumbnailUrl: item.snippet.thumbnails.high.url
                });
            });
        });
    }
}

如果要用POST方式的話,也有http.post方法。

makePost(): void {
    this.loading = true;
    this.http.post(
    'http://jsonplaceholder.typicode.com/posts',
        JSON.stringify({
            body: 'bar',
            title: 'foo',
            userId: 1
        }))
        .subscribe((res: Response) => {
            this.data = res.json();
            this.loading = false;
    });
}

當然還有http.put,http.patch,http.delete以及http.head方法。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.進入root su 2.編輯文件 vim /etc/inputrc [按下i鍵開始輸入] 3.加入新配置 set completion-ignore-case on 4.保存 [按下esc鍵,再輸入:wq確定保存] 5.重啟 reboot ...
  • 官網地址:https://redis.io/download 最新版本是4.0,在這裡本人下的是3.2 使用rz命令可以將Redis上傳到Linux系統 首先要確定Linux上是否安裝了gcc,沒有則使用yum install gcc-c++安裝 在安裝時出現下麵的錯誤提示 使用rm -f /var ...
  • 經常玩伺服器上的mysql資料庫,但是基於linux操作Mysql多有不便,於是就想著使用GUI工具來遠程操作mysql資料庫。已經不是三次使用navicat-for-mysql了,但是每次連接遠程伺服器的Mysql資料庫都會遇到問題,煩,索性這次就記下來,下次再使用navicat for mysq ...
  • SQL語句的DECODE()和NVL()函數用法 SELECT DECODE(choose_tool,0,'寶馬',1,'電動車',2,'自行車','步行') AS my_tool FROM data_tool_t //分析:當choose_tool為0時候,my_tool=‘寶馬’ 當choose ...
  • 1 -- 1、DECLARE EXIT HANDLER FOR SQLEXCEPTION 語句後面可以跟一個 begin end的複合語句塊,也可以直接跟一個簡單語句例如 :DECLARE EXIT HANDLER FOR SQLEXCEPTION v_succ=0; 3 -- 2、EXIT會在執行... ...
  • 一、Android studio的安裝 【提示】A、以下Android studio2.2.2版本。(也有新版本) B、以下是用Android studio自帶的sdk ①雙擊安裝文件進行安裝 ②如果沒有SDK,要勾選Android SDK。(如果有可以選擇不勾選) ③設置Android studi ...
  • 相信大部分人都被Android Studio環境配置搞得很頭痛,至少我為這個配置花費了將近5h,Android Studio作為一款強大的IDE,比起Eclipse來說,更加方便Android的開發,但作為新手的我們不應該因為Android Studio的配置而打退堂鼓,這篇文章儘量從配置原理方面來... ...
  • 【效果】(這裡下載的軟體收費的試用有水印) 【推薦】這裡推薦一個圖標網http://iconfont.cn/。以上圖標來自此圖標網 【項目結構】 【步驟】 ①創建佈局文件,寫底部導航欄 ②定義Fragment 【提示】可以通過下圖方式創建 對於生成的Fragment不用作修改,對應的佈局中設置一個背 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...