我正在尝试在Nativescrpt(Typescript + Angular2)应用程序中的服务器上发送http.patch请求。后端是用Python(Django)编写的
这是我的要求
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)
您可以使用NativeScript中的 http 模块。
发送PATCH应该类似于以下示例:
page.ts(TypeScript示例)
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);
});
}
HTTP模块的API参考:https://docs.nativescript.org/api-reference/modules/http.html
此处的文档文章:https://docs.nativescript.org/cookbook/http#post-json
答案 1 :(得分:0)
这是我在需要发出http请求时所做的事情:
1.-在Root App NgModule中导入NativeScript http模块:
import { NativeScriptHttpModule } from "nativescript-angular/http";
...
@NgModule({
imports: [
...
NativeScriptHttpModule,
...
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
2.-将Angular http(和标题,如果需要)导入组件:
import { Http, Headers } from '@angular/http';
3.-在构造函数中注入它:
constructor(private http: Http, ...) { ... }
4.-使用http方法(即在这里POST,但可以使用任何方法):
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)
);
如果您使用方法 map()出现任何错误,则需要添加以下行:
import "rxjs/add/operator/map";
希望它有所帮助!