How do I POST JSON in Angular 2?

后端 未结 3 1364
孤街浪徒
孤街浪徒 2020-12-24 03:00

I don\'t understand what I am doing wrong, my server returns \"undefined\" when I try to get the json.

POST(url, data) {
        var headers = new Headers(),         


        
相关标签:
3条回答
  • 2020-12-24 03:40

    You need to stringify the payload

    var requestoptions = new RequestOptions({
                method: RequestMethod.Post,
                url: this.apiURL + url,
                headers: headers,
                body: JSON.stringify(data)
            })
    
    0 讨论(0)
  • 2020-12-24 03:45

    I have been looking for a visual answer to the question of posting json data in Angular for a while, to no avail. Now that I eventually have something working, let's share:

    Inlined

    Let's assume you expect a json response body of type T.

    const options = {headers: {'Content-Type': 'application/json'}};
    this.http.post<T>(url, JSON.stringify(data), options).subscribe(
        (t: T) => console.info(JSON.stringify(t))
    );
    

    Official doc

    Extendable class

    import { HttpClient, HttpHeaders } from '@angular/common/http';
    
    export class MyHttpService {
      constructor(protected http: HttpClient) {}
    
      headers = new HttpHeaders({
        'Content-Type': 'application/json'
      });
    
      postJson<T>(url: string, data: any): Observable<T> {
        return this.http.post<T>(
          url,
          JSON.stringify(data),
          {headers: this.headers}
        )
      }
    

    The gist

    In the beginning I missed this sort of 'nested' way to pass in the content-type:

    {headers:{'Content-Type': 'application/json'}}
    
    0 讨论(0)
  • 2020-12-24 03:46

    The header should be

    'Content-Type': 'application/json'
    

    and

     body: data
    

    should be

     body: JSON.stringify(data);
    
    0 讨论(0)
提交回复
热议问题