我正在后端用REST api构建一个小的Angular前端支持,但是我遇到了一个非常奇怪的问题:做http.post(url,data,params)会导致什么都没发生(那里有's' s没有迹象表明该请求曾经访问过网络服务器,在Chrome开发者工具中,与this.http.get()请求相反,绝对没有记录任何请求,这对于同一服务器上的URL工作正常。)
export class RestComponent {
constructor ( private http: Http ) {}
sendStuff() {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
this.http.post('http://localhost:3021/api/data', {'data': 3}, options)
.catch(this.handleError);
}
}
我感到非常愚蠢,因为它必须是相当明显的东西,但却逃脱了我。我创建了一个简单的组件,只有两个方法,一个通过post发送硬编码数据,另一个通过get获取硬编码json,第二个工作但第一个没有。
不胜感激。
谢谢!
答案 0 :(得分:4)
基本上你只创造了一个可观察的,而Observable本质上是懒惰的。只有当有人订阅它们时,它们才会得到呼叫/发出。因此,您必须将subscribe
调用从它返回的Observable以使您的代码正常工作。除此之外,一切似乎都很完美。
sendStuff() {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post('http://localhost:3021/api/data', {'data': 3}, options)
.catch(this.handleError)
.subscribe(
(data) => console.log(data)
);
}
答案 1 :(得分:0)
我们没有服务器代码可供查看,但请确保路由设置为期望内容类型application/json
,因为默认情况下,后期路由会期望发布数据,具体取决于您使用的技术用于您的服务器。
也可以尝试做一个相对路径:.post('/api/data')