Angular:带有主体的http POST

时间:2019-11-20 12:08:11

标签: angular angular8

我试图以与身体成角度的方式调用http post调用,但没有得到响应。

callAddGroupAPI(formId, groupJSON){
   let json = {
       "group":groupJSON
   }

    this.http.post(this.apiURL+'AddGroup/'+formId+'/3',{body:json}).subscribe(message => {
      alert("success");
      },
      (err) => {
        console.log(err)
      }
    )
 }

其中“ this.apiURL / AddGroup / formId / groupId ”是我的网址 并且我想发送一些JSON正文,其中“ 键=组”和“ value = someJSON

I am attaching the postman screenshot below

3 个答案:

答案 0 :(得分:1)

您需要在发帖请求中添加HttpHeaders,例如https://angular.io/guide/http#making-a-post-request

import { HttpHeaders } from '@angular/common/http';

const httpOptions = {
  headers: new HttpHeaders({
    'Content-Type':  'application/json',
    'Authorization': 'my-auth-token'
  })
};

addHero (hero: Hero): Observable<Hero> {
  return this.http.post<Hero>(this.heroesUrl, hero, httpOptions)
    .pipe(
      catchError(this.handleError('addHero', hero))
    );
}

答案 1 :(得分:1)

您可以尝试这种方式:

 create(request: RequestData) {
 return this.http.post(this.shopService.getShopBaseUrl() + 
 'Requests', request, {
 headers: new HttpHeaders()
 .set('Content-Type', 'application/json')});

答案 2 :(得分:1)

我认为您的问题与身体形态有关。 enter image description here

在邮递员中,其正文为 form-data ;在Angular中,如果未将http正文定义为 form-data ,则默认为原始正文,带有JSON对象。

我想解决您的问题,您需要将代码更改为:

const body = new FormData();
body.set('group',groupJSON);
//or
body.append('group',groupJSON);

this.http.post(this.apiURL+'AddGroup/'+formId+'/3',body).subscribe(message => {
  alert("success");
  },
  (err) => {
    console.log(err)
  }
)