2016-02-12 154 views
4

客戶端有表單和按鈕,我想將用戶輸入的數據發送到服務器,在那裏有請求處理程序保存數據到數據庫,從數據庫到客戶端。Angular2:請求時如何從客戶端發送數據到服務器

我該如何做到這一點我對邏輯感到困惑,我認爲有使用body parser,在這種情況下請求選項的作用是什麼,我發現解決方案但我沒有實現盲目的,我只是想了解

在客戶端後,我的方式去做:

let headers: Headers = new Headers(); 
headers.append('Content-Type', 'application/json'); 
let opts: RequestOptions = new RequestOptions(); 
opts.headers = headers; 
this.http.post('http://localhost: 
3000/addStudent',JSON.stringify(obj),opts).subscribe((res: Response) => { 
      console.log(res.json()) 
      setTimeout(()=>{ 
      this.students = res.json(); 
     }, 3000) 
     }) 

在服務器端:

app.post('/addStudent',function(req,res){ 
var newStudent = new StudentModel(req.body); 
console.log(req.body); 
newStudent.save(); 
StudentModel.find(function(err,data){ 
    if(err) res.send(err) 
    else{ 
     res.json(data) 
    } 
}) 

回答

3

嗯,你的問題是關於HTTP即從客戶端和服務器端交換數據。 這樣做同樣首先你需要添加http文件中的index.html文件是這樣的:

<script src="node_modules/angular2/bundles/http.dev.js"></script> 

,你必須添加HTTP_PROVIDERS是否在系統啓動的領帶或供應商之列。

所以現在來到RequestOptions, Headers etc。首先導入這些從這裏嘀......頭的

import {Http, Response, RequestOptions, Headers, Request, RequestMethod} from 'angular2/http'; 

角色:

基本上頭用於追加Content-Type或某種類似username,Password機密數據,這是我們要發送到服務器。 我們也有用於向服務器發送數據的身體部分。例如:

this.headers = new Headers(); 
    this.headers.append("Content-Type", 'application/json'); 
    this.headers.append("Authorization", 'confidential data or 
    something like that') 

RequestOptions:

Bascially RequestOptions是一些properts像method集合(GET,POST,PUT ....),url or path to json file etcHeadersbody part 多。我們可以根據需要添加不同的optipon。例如這裏是使用RequestOptions的例子。

this.requestoptions = new RequestOptions({ 
       method: RequestMethod.Post, 
       url: "url path....", 
       headers: this.headers, 
       body: JSON.stringify(data) 
      }); 

這裏是我找到的一些最好的教程。希望這可以幫助你。

@Pardeep。

http://www.syntaxsuccess.com/viewarticle/angular-2.0-and-http

https://auth0.com/blog/2015/10/15/angular-2-series-part-3-using-http/

https://angular.io/docs/js/latest/api/http/Request-class.html

+1

我們仍然可以發送帶有GET字符串化的身體?我試過HTTT獲得(網址,選項),但我不能讓身體到達服務器,我錯過了什麼? – Ayyash

+0

不,我不這麼認爲,與GET請求,你可以發送身體的一部分。您可以使用POST請求以及PUT請求發送正文部分。 –

+1

我想這是有道理的。但是我們來自一個jQuery背景,我們通過讓GET請求傳遞數據json對象而使我們被破壞,它爲我們設置參數。 – Ayyash

相關問題