get方式未传参类型

  1. //app.module.ts
  2. import { NgModule } from '@angular/core';
  3. import { BrowserModule } from '@angular/platform-browser';
  4. import { AppRoutingModule } from './app-routing.module';
  5. import { AppComponent } from './app.component';
  6. import { HttpClient, HttpClientModule } from '@angular/common/http';
  7. @NgModule({
  8. declarations: [AppComponent],
  9. imports: [BrowserModule, HttpClientModule, AppRoutingModule],
  10. providers: [],
  11. bootstrap: [AppComponent],
  12. })
  13. export class AppModule {
  14. constructor(public http: HttpClient) {}
  15. }
  1. //app.component.ts
  2. import { Component } from '@angular/core';
  3. import { HttpClient } from '@angular/common/http';
  4. import { Observable } from 'rxjs';
  5. import { map } from 'rxjs/internal/operators';
  6. @Component({
  7. selector: 'app-root',
  8. templateUrl: './app.component.html',
  9. styleUrls: ['./app.component.css'],
  10. })
  11. export class AppComponent {
  12. public list: any;
  13. title = 'data';
  14. constructor(public http: HttpClient) {
  15. this.getData();
  16. console.log(this.list);
  17. // this.getBanners().subscribe((res: any) => {
  18. // console.log(res);
  19. // });
  20. }
  21. getData() {
  22. this.http
  23. .get('http://a.itying.com/api/productlist')
  24. .subscribe((res: any) => {
  25. console.log(res);
  26. this.list = res;
  27. });
  28. }
  29. // getBanners(): Observable<any> {
  30. // return this.http
  31. // .get('http://localhost:3000/banner')
  32. // .pipe(map((res: any) => res.banners));
  33. // }
  34. }

get方式加传参类型

  1. //app.module.ts
  2. import { NgModule } from '@angular/core';
  3. import { BrowserModule } from '@angular/platform-browser';
  4. import { AppRoutingModule } from './app-routing.module';
  5. import { AppComponent } from './app.component';
  6. import { HttpClient, HttpClientModule } from '@angular/common/http';
  7. @NgModule({
  8. declarations: [AppComponent],
  9. imports: [BrowserModule, HttpClientModule, AppRoutingModule],
  10. providers: [],
  11. bootstrap: [AppComponent],
  12. })
  13. export class AppModule {
  14. constructor(public http: HttpClient) {}
  15. }
  1. //app.component.ts
  2. import { Component } from '@angular/core';
  3. import { HttpClient } from '@angular/common/http';
  4. import { Observable } from 'rxjs';
  5. import { map } from 'rxjs/internal/operators';
  6. import queryString from 'query-string';
  7. //定义传参数据格式
  8. type SingerParams = {
  9. offset: number;
  10. limit: number;
  11. cat?: string;
  12. }
  13. //定义默认展示情况下需要传入的数据
  14. const defaultParams: SingerParams = {
  15. offset: 0,
  16. limit: 9,
  17. cat?: '5001'
  18. }
  19. @Component({
  20. selector: 'app-root',
  21. templateUrl: './app.component.html',
  22. styleUrls: ['./app.component.css'],
  23. })
  24. export class AppComponent {
  25. public list: any;
  26. title = 'data';
  27. constructor(public http: HttpClient) {
  28. this.getBanners().subscribe((res: any) => {
  29. console.log(res);
  30. });
  31. }
  32. getBanners(args: SingerParams = defaultParams): Observable<any> {
  33. const params = new HttpParams({fromString: queryString.stringify(args)})
  34. return this.http
  35. .get('http://localhost:3000/artist/list', { params })
  36. .pipe(map((res: any) => res.artists));
  37. }
  38. }

单个参数还可以使用set传值

  1. getSongSheetDetail(id: number): Observable<SongSheet> {
  2. const params = new HttpParams().set('id', id.toString());
  3. return this.http.get(this.uri + 'playlist/detail', { params })
  4. .pipe(map((res: { playlist: SongSheet }) => res.playlist));
  5. }

get传参同样可以使用问号拼接参数的方式

  1. getData() {
  2. this.http
  3. .get('http://www.liulongbin.top:3006/api/getbooks?id=1')
  4. .subscribe((res: any) => {
  5. console.log(res);
  6. this.list = res;
  7. });
  8. }

post提交数据

Angular5.x以后get, post和和服务器交互使用的是HttpClientModule模块。

  1. //在app.module.ts中引入HttpClientModule注入
  2. import {HttpClientModule} from '@angular/common/http'
  3. imports:[
  4. BrowserModule,
  5. HttpClientModule
  6. ]
  1. //在用到的地方引入HttpClient、HttpHeaders并在构造函数声明HttpClient
  2. import {HttpClient, HttpHeaders} from "@angular/common/http";
  3. constructor(public http:Httpclient) {}
  4. //post提交数据
  5. var url="http://127.0.0.1:8080/doLogin";
  6. this.http.post(url, {"age":22,"username":"zl"})
  7. .subscribe((response)=>{
  8. console.log(response)
  9. })

Jsonp请求数据

  1. //在app.module.ts中引入HttpClientModule, HttpClientJsonpModule并注入
  2. import {HttpClientModule,HttpclientJsonpModule} from@angular/common/http';
  3. imports:[
  4. BrowserModule,
  5. HttpClientModule,
  6. HttpClientJsonpModule
  7. ]
  1. //在用到的地方引入httpClient并在构造函数声明
  2. import {HttpClient} from "@angular/common/http";
  3. //发送请求
  4. var url="http://127.0.0.1:8080/doLogin";
  5. this.http.jsonp(url,"callback").subscribe((response:any)=>{
  6. this.userList=response;
  7. console.log(response)
  8. })

angular中使用第三方模块axios请求数据

  1. //安装axios
  2. cnpm install axios --save
  3. //用到的地方引入axios
  4. import axios from 'axios";
  5. //get请求
  6. var url= "http://127.0.0.1:8080/api/productlist";
  7. axios.get(url)
  8. .then(function (response){
  9. console.log(response)
  10.   )}

在服务(service)中通过Promise封装请求

  1. var url= "http://127.0.0.1:8080/api/productlist";
  2. axios.get(url)
  3. .then(function (response){
  4. console.log(response)
  5.   )}
  1. //在用到的组件中引入服务,然后调用方法
  2. import { CommonService } from '../../services/common.service';
  3. constructor(public common:CommonService) { }
  4. this.common.get(api).then((response)->{
  5. console. log (response);
  6. })