Angular中使用HttpClientModule模塊實現get請求數據和post提交數據


場景

Angular介紹、安裝Angular Cli、創建Angular項目入門教程:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/105570017

Angular新建組件以及組件之間的調用:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/105694997

通過以上搭建起Angular項目。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。

實現

Angular5.x 以后get、post 和和服務器交互使用的是HttpClientModule 模塊。

使用HttpClientModule實現get請求數據

1.在app.module.ts 中引入HttpClientModule 並注入

import {HttpClientModule} from '@angular/common/http';

注入

  imports: [
    BrowserModule,
    FormsModule,
    AppRoutingModule,
    HttpClientModule
  ],

 

 

2.在用到的地方引入HttpClient 並在構造函數聲明

import {HttpClient} from "@angular/common/http";

 

constructor(public http:HttpClient) { }

 

 

3.get請求數據

在用到請求數據的html中添加一個button並添加點擊事件,然后再添加一個ul來顯示獲取到的數據

<button (click) = "getData()">get請求數據</button>
<br>
<hr>

<ul>
    <li *ngFor = "let item of list">{{item.title}}</li>
</ul>

 

在ts中首先聲明一個list數組來存儲響應的數據

public list:any[] = [];

 

然后在按鈕的點擊事件中

  getData()
  {
    var api = "http://xxx.com/api/productlist";
    this.http.get(api).subscribe((response:any) =>{
      console.log(response);
      this.list = response.result;
    });
  }

 

其中api是獲取數據的后台接口,這里數據在響應的result中,所以獲取數據使用response.result

 

 

 

然后運行項目,點擊按鈕看效果

 

 

 

使用HttpClientModule實現post提交數據

1.在app.module.ts 中引入HttpClientModule 並注入

import {HttpClientModule} from '@angular/common/http';

 

注入

  imports: [
    BrowserModule,
    FormsModule,
    AppRoutingModule,
    HttpClientModule
  ],

 

 

2.在用到的地方引入HttpClient 和HttpHeaders並在構造函數聲明HttpClient

import {HttpClient,HttpHeaders} from "@angular/common/http";

 

constructor(public http:HttpClient) { }

 

3.post提交數據

為了測試效果搭建一個后台服務端,這里使用node

搭建node服務端

新建文件夾nodejs_serve,然后在此文件夾下新建兩個文件

 

 

 

其中app.js代碼為

 

var express = require('express');

var app= express();

var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

/*express允許跨域*/

app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By",' 3.2.1')
    if(req.method=="OPTIONS") res.send(200);
    else  next();
});

 


//app.use(express.static(path.join(__dirname, 'public')));

app.get('/',function(req,res){

 res.send('首頁');

})

app.post('/dologin',function(req,res){

 console.log(req.body);

  res.json({"msg":'post成功'});

 

})

app.get('/news',function(req,res){

 //console.log(req.body);
 res.jsonp({"msg":'這是新聞數據'});

})

 


app.listen(3000,'127.0.0.1');

 

 

然后package.json代碼為

{
  "dependencies": {
    "ejs": "^2.5.6",
    "express": "^4.15.3",
    "socket.io": "^2.0.3",
    "body-parser": "~1.17.1"
  }
}

 

然后在此目錄下打開cmd輸入

npm install

 

或者

cnpm install

 

 

 安裝依賴完成后運行項目

node app.js

 

 

然后打開瀏覽器輸入

http://localhost:3000/

看到如下則是項目運行成功

 

 

 


post提交數據 

首先在頁面上添加一個按鈕並設置按鈕的點擊事件

<button (click) = "doLogin()">post提交數據</button>

 

然后在點擊事件多對應的方法中

  doLogin()
  {
    const httpOptions = {
      headers: new HttpHeaders({ 'Content-Type': 'application/json' })
      };
      var api = "http://127.0.0.1:3000/doLogin";
      this.http.post(api,{username:'霸道',age:'24'},httpOptions).subscribe(response => {
      console.log(response);
      });

  }

 

注意上面headers的書寫方式

然后運行項目點擊按鈕

 

 

此時查看node服務端控制台

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM