2016-11-01 111 views
1

我試圖在Nativescrpt(Typescript + Angular2)應用程序的服務器上發送http.patch請求。後端寫關於Python(Django的)在Nativescript應用程序的服務器上發送http.patch請求

這是我的要求

updateOrder(id, message) { 
    let headers = new Headers(); 
    headers.append("Authorization", "Token " + Config.token); 
    headers.append("Content-Type", "application/json"); 
    return this.http.patch(
     Config.apiUrl + "orders/" + id + "/", 
     message, 
     {headers: headers} 
) 
    .map(response => response.json()) 
    .catch((res: Response) => this.handleErrors(res)); 

在這裏,我把它。

changeStatus(status){ 
    var message = JSON.stringify({status: status}); 
    this.orderService.updateOrder(this.order.id, message).subscribe(
     data => console.log(data), 
     err => alert(JSON.stringify(err)) 
    ); 
} 

但服務器返回這樣的數據:

{"_body":{},"status":200,"ok":true,"statusText":"","headers":{},"type":3,"url":null} 

而且我的財產 「地位」,我想改變,仍然是相同的。

我在做什麼錯了?

+0

_「我的財產」狀態「,我想改變,保持不變。」_ - 這不是你應該在服務器端做的事嗎?如果這不是你的問題,你能澄清一下問題是什麼。目前還不是很清楚 –

+0

在服務器端有一個方法可以處理這個查詢,但是我的問題是查詢似乎沒有發送,導致我的數據沒有變化。 –

+0

你在服務器端做過任何調試嗎? –

回答

0

您可以使用NativeScript上的http模塊。

發送PATCH應類似於下面的例子:

page.ts(打字稿例子),用於HTTP模塊

import * as http from"http"; 
    http.request({ 
     url: "https://httpbin.org/patch", 
     method: "PATCH", 
     headers: { "Content-Type": "application/json" }, 
     content: JSON.stringify({ MyVariableOne: "ValueOne", MyVariableTwo: "ValueTwo" }) 
    }).then(response => { 
     var result = response.content.toJSON(); 
     console.log(result); 
    }); 
} 

API參考:https://docs.nativescript.org/api-reference/modules/http.html

文檔文章在這裏:https://docs.nativescript.org/cookbook/http#post-json

+0

我試過了,但在那種情況下,我得到了下一個錯誤:錯誤TS2345:類型'{url:string;方法:string;標題:標題;內容:任何; }'不能分配給類型爲'string |的參數請求'。對象字面量只能指定已知屬性,而'內容'不存在於'string |類型'中請求'。 –

0

這就是我需要做http請求時所做的事情:

1.-導入在根應用NgModule的NativeScript HTTP模塊:

import { NativeScriptHttpModule } from "nativescript-angular/http"; 
... 
@NgModule({ 
    imports: [ 
     ... 
     NativeScriptHttpModule, 
     ... 
    ], 
    declarations: [AppComponent], 
    bootstrap: [AppComponent] 
}) 

2.-導入角的http(和如果需要的話標頭)與組分:

import { Http, Headers } from '@angular/http'; 

3.-進樣它在構造函數中:

constructor(private http: Http, ...) { ... } 

4.-使用http方法(即張貼在這裏,但適用於任何):

var url = "http://www.api-url.com/example.php"; 
var body = {foo: "foo", bar:"bar"}; 
let headers = new Headers(); 
headers.append("Authorization", token); //You can append any header you need 
headers.append("Content-Type", "application/json"); 
this.http.post(url, body, { headers: headers }) 
    .map(res => res.json()) 
    .subscribe(
     data => this.connectionEstablished(data), 
     err => this.handleErrors(err) 
    ); 

如果您遇到任何錯誤與方法地圖()你需要添加這一行:

import "rxjs/add/operator/map"; 

希望它能幫助!