[英]Unable to send POST request via HTTP in Angular 4
我正在通過后端的REST api構建小的Angular前端支持,但是我遇到了一個非常奇怪的問題:執行http.post(url,data,params)不會導致任何事情發生(沒有跡象表明該請求曾經擊中過網絡服務器,在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,第二種有效,但第一種無效。
將不勝感激任何指針。
謝謝!
本質上,您創建的只是一個可觀察的對象,而可觀察的對象本質上是惰性的。 僅當有人訂閱它們時,它們才會被呼叫/發送。 因此,您必須調用從其返回的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)
);
}
沒有服務器代碼供我們查看,但請確保將路由設置為期望內容類型application/json
因為默認情況下,發布路由將期望發布數據,具體取決於您使用的服務器技術。
也可以嘗試只做一個相對路徑: .post('/api/data')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.