## Http
在底層使用`XMLHttpRequest`發送http請求。
`Http`作為一個類服務,提供了發送http請求所需的方法。調用`request`方法返回一個`Observable`對象,
### 如何使用
```typescript
import {Http, HTTP_PROVIDERS} from '@angular/http';
import 'rxjs/add/operator/map'
@Component({
selector: 'http-app',
viewProviders: [HTTP_PROVIDERS],
templateUrl: 'people.html'
})
class PeopleComponent {
constructor(http: Http) {
http.get('people.json')
// Call map on the response observable to get the parsed people object
.map(res => res.json())
// Subscribe to the observable to get the parsed people object and attach it to the
// component
.subscribe(people => this.people = people);
}
}
```
### 類定義
```typescript
class Http {
constructor(_backend: ConnectionBackend, _defaultOptions: RequestOptions)
request(url: string|Request, options?: RequestOptionsArgs) : Observable<Response>
get(url: string, options?: RequestOptionsArgs) : Observable<Response>
post(url: string, body: any, options?: RequestOptionsArgs) : Observable<Response>
put(url: string, body: any, options?: RequestOptionsArgs) : Observable<Response>
delete(url: string, options?: RequestOptionsArgs) : Observable<Response>
patch(url: string, body: any, options?: RequestOptionsArgs) : Observable<Response>
head(url: string, options?: RequestOptionsArgs) : Observable<Response>
options(url: string, options?: RequestOptionsArgs) : Observable<Response>
}
```
```typescript
http.get('people.json').subscribe((res:Response) => this.people = res.json());
```
默認構造方式用于發送請求,`XMLHttpRequest`被抽象為'Backend'(這里指`XHRBackend`),它可以通過替換`XHRBackend`供應商使用依賴注入方式來模擬,參考如下:
```typescript
import {BaseRequestOptions, Http} from '@angular/http';
import {MockBackend} from '@angular/http/testing';
var injector = Injector.resolveAndCreate([
BaseRequestOptions,
MockBackend,
{provide: Http, useFactory:
function(backend, defaultOptions) {
return new Http(backend, defaultOptions);
},
deps: [MockBackend, BaseRequestOptions]}
]);
var http = injector.get(Http);
http.get('request-from-mock-backend.json').subscribe((res:Response) => doSomething(res));
```
### 屬性
- request(url: `string|Request`, options?: `RequestOptionsArgs`) : `Observable<Response>`
執行任何合法的http請求。第一個參數為必填,值為url或者`Request`實例。如果當前傳入參數為一個url,那么可以提供一個`RequestOptions`對象類型作為第二個可選參數,在發送請求前它將最終同`BaseRequestOptions`對象合并。
- get(url: `string`, options?: `RequestOptionsArgs`) : `Observable<Request>`
發送http的`get`請求方式
- post(url: `string`, body: any, options?: `RequestOptionsArgs`) : `Observable<Request>`
發送http的`post`請求方式
- put(url: `string`, body: any, options?: `RequestOptionsArgs`) : `Observable<Request>`
發送http的`put`請求方式
- delete(url: `string`, options?: `RequestOptionsArgs`) : `Observable<Request>`
發送http的`delete`請求方式
- patch(url: `string`, body: any, options?: `RequestOptionsArgs`) : `Observable<Request>`
發送http的`patch`請求方式
- head(url: `string`,, options?: `RequestOptionsArgs`) : `Observable<Request>`
發送http的`head`請求方式
- options(url: `string`,, options?: `RequestOptionsArgs`) : `Observable<Request>`
發送http的`options`請求方式
- 說明
- angular 1.x
- ngModelController
- ngOptions
- ngModelOptions
- lifecycle
- directive
- angular 2
- @angular/forms
- 類
- AbstractControl
- AbstractControlDirective
- AbstractFormGroupDirective
- FormControl
- FormArray
- FormBuilder
- FormGroup
- NgControl
- 接口
- controlValueAccessor
- 指令
- DefaultValueAccessor
- Angular 2 生命周期
- OnInit
- DoCheck
- @angular/router
- 配置
- Routes
- 指令
- RouterOutlet
- RouterLink
- 接口
- ActivatedRoute
- UrlTree
- NavigationExtras
- ActivatedRouteSnapshot
- RouterStateSnapshot
- 類
- UrlSegment
- UrlSegmentGroup
- UrlSerializer
- DefaultUrlSerializer
- Router
- bug記得
- @angular/http
- 類
- Http
- Body
- Response
- ResponseOptions
- Header
- Request
- RequestOptions
- URLSearchParams
- @angular/core
- decorator
- Component-decorator
- animation
- DI
- linker
- TemplateRef
- ElementRef
- EmbeddedViewRef
- ViewRef
- ViewContainerRef
- Query
- ComponentFactory
- ComponentRef
- Renderer
- change_detection
- KeyValueDiffers
- IterableDiffers
- ChangeDetectorRef
- ChangeDetectionStrategy
- Zone
- ngZone
- @angular/common
- 指令
- NgTemplateOutlet
- QueryList
- bootstrap4
- card
- form
- 重點關注博客
- 學習過的文章
- 筆記
- Angular 2 雙向綁定
- 將字符串解析成DOM
- rx相關
- operators
- combineLatest
- combineAll
- concat(All, Map, *MapTo)
- 背壓(backpressure)
- js事件keycode對應表
- 裝飾器
- 有用的代碼摘錄
- 日期操作
- 數量操作
- 字符操作
- rxjs問題
- 小示例
- h5面試準備
- react
- 開發遇到的問題