bestsource

Angular 2 http.post()이 요청을 전송하지 않습니다.

bestsource 2023. 4. 24. 23:40
반응형

Angular 2 http.post()이 요청을 전송하지 않습니다.

투고 요청을 할 때 angular 2 http는 이 요청을 전송하지 않습니다.

this.http.post(this.adminUsersControllerRoute, JSON.stringify(user), this.getRequestOptions())

http post는 서버로 전송되지 않지만 이렇게 요청하면

this.http.post(this.adminUsersControllerRoute, JSON.stringify(user), this.getRequestOptions()).subscribe(r=>{});

이것은 의도된 것이며 누군가 나에게 이유를 설명해 줄 수 있다면? 아니면 버그인가?

그 이후로는post의 방법Httpclass는 초기화 처리를 실행하기 위해 등록해야 하는 관찰 가능을 반환합니다.관측할 수 있는 것은 게으르다.

상세한 것에 대하여는, 다음의 비디오를 봐 주세요.

콜을 실행하려면 반환된 관찰 가능을 구독해야 합니다.

다음 각도 문서 "HTTP를 사용하여 백엔드 서비스와 통신"을 참조하십시오.

요청 시작

모든 메서드에서 메서드는 사용자가 호출할 때까지 HTTP 요청을 시작하지 않습니다.subscribe()메서드가 반환됩니다.

이것은 모든 방법에 해당됩니다.

컴포넌트가 파괴되었을 때는 항상 관찰 가능한 컴포넌트의 등록을 해제해야 합니다.

방법에서 반환되는 모든 관측치는 설계상 차갑습니다.HTTP 요청 실행이 지연되므로 다음과 같은 추가 작업을 통해 관찰 가능 범위를 확장할 수 있습니다.tap그리고.catchError어떤 일이 일어나기 전에 말이죠

부르기subscribe()는 관찰 가능한 실행을 트리거하여 HTTP 요청을 작성하여 서버로 전송합니다.

이러한 관찰 가능은 실제 HTTP 요청의 Blueprint로 간주합니다.

사실, 각각subscribe()는 관찰 가능한 개별적이고 독립적인 실행을 시작합니다.2회 서브스크라이브하면2개의 HTTP 요구가 생성됩니다.

const req = http.get<Heroes>('/api/heroes');
// 0 requests made - .subscribe() not called.
req.subscribe();
// 1 request made.
req.subscribe();
// 2 requests made.

관련 사항:AsyncPipe가 자동으로 구독(및 구독 취소)합니다.

Get 메서드는 서브스크라이브 메서드를 사용할 필요가 없지만 포스트 메서드는 서브스크라이브가 필요합니다.Get 및 Post 샘플 코드는 다음과 같습니다.

import { Component, OnInit } from '@angular/core'
import { Http, RequestOptions, Headers } from '@angular/http'
import 'rxjs/add/operator/map'
import 'rxjs/add/operator/catch'
import { Post } from './model/post'
import { Observable } from "rxjs/Observable";

@Component({
    templateUrl: './test.html',
    selector: 'test'
})
export class NgFor implements OnInit {

    posts: Observable<Post[]>
    model: Post = new Post()

    /**
     *
     */
    constructor(private http: Http) {

    }

    ngOnInit(){
        this.list()
    }

    private list(){
        this.posts = this.http.get("http://localhost:3000/posts").map((val, i) => <Post[]>val.json())
    }

    public addNewRecord(){
        let bodyString = JSON.stringify(this.model); // Stringify payload
        let headers      = new Headers({ 'Content-Type': 'application/json' }); // ... Set content type to JSON
        let options       = new RequestOptions({ headers: headers }); // Create a request option

        this.http.post("http://localhost:3000/posts", this.model, options) // ...using post request
                         .map(res => res.json()) // ...and calling .json() on the response to return data
                         .catch((error:any) => Observable.throw(error.json().error || 'Server error')) //...errors if
                         .subscribe();
    }
}

언급URL : https://stackoverflow.com/questions/36208732/angular-2-http-post-is-not-sending-the-request

반응형