Angular中的数据请求 内置模块HttpClient实现(get post jsonp 以及第三方模板axios请求数据
封装服务:
httpservice.service.ts
import { Injectable } from '@angular/core';
import axios from "axios";
@Injectable({
providedIn: 'root'
})
export class HttpserviceService {
constructor() { }
axiosGet(api){
return new Promise((resolve,reject)=>{
axios.get(api).then(function(response){
resolve(response)
});
});
}
}
在app.module.ts中使用:
import{HttpserviceService}from "./services/httpservice.service";
providers: [HttpserviceService],
2.
app.module.ts
//引入HttpClientModule import{HttpClientModule,HttpClientJsonpModule}from "@angular/common/http"; imports: [ HttpClientModule, HttpClientJsonpModule ],
http.component.ts
import { Component, OnInit } from '@angular/core';
//当作一个服务:
import { HttpClient, HttpHeaders } from "@angular/common/http";
import { from } from 'rxjs';
//使用服务里面的axios获取数据:
import{HttpserviceService} from "../../services/httpservice.service";
@Component({
selector: 'app-http',
templateUrl: './http.component.html',
styleUrls: ['./http.component.scss']
})
export class HttpComponent implements OnInit {
public list: any[] = [];
constructor(public http: HttpClient,public httpService:HttpserviceService) { }
ngOnInit() {
}
getData() {
alert("执行get请求");
let api = "http://a.itying.com/api/productlist";
this.http.get(api).subscribe((response: any) => {
console.log(response);
this.list = response.result;
})
}
doLogin() {
const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) }
//存在跨域:
var api = "";
this.http.post(api, { "username": "张三", "age": 20 }, httpOptions).subscribe((response) => {
});
alert("执行");
}
getJsonpData() {
//jsonp请求,服务器必须的支持jsonp:
let api = "http://a.itying.com/api/productlist";
this.http.jsonp(api, 'callback').subscribe((response)=>{
console.log(response);
});
}
getAxiosData(){
let api = "http://a.itying.com/api/productlist";
this.httpService.axiosGet(api).then((data)=>{
console.log(data);
});
}
}
http.component.html
<p>
new works
</p>
<button (click)="getData()">get请求的数据</button>
<br/>
<ul>
<li *ngFor="let item of list">
{{item.title}}
</li>
</ul>
<br/>
<button (click)="doLogin()">post提交数据</button>
<br/>
<button (click)="getJsonpData()">jsonp请求</button>
<br/>
<button (click)="getJsonpData()">通过第三方模块获取的请求的数据</button>

浙公网安备 33010602011771号