Angular post未按预期提供请求正文

时间:2018-01-19 11:27:13

标签: javascript spring angular http-post

我的第一个单独的Angular应用程序......

我试图发布到我的全新网络服务并使用以下代码:

  headers = new HttpHeaders(
    {'Content-Type':'text/plain'}
  );
  loginUrl = "http://localhost:8093/login";

  login(credentials): Observable<String> {
    const body = new HttpParams()
      .set('payload', 'testing...');

    let bodyValue = body.toString()
    return this.http.post<String>(this.loginUrl, body,{headers: this.headers})
  }

我的春季启动应用程序正在抛出异常,因为在收到帖子时,请求中缺少有效负载参数。

我在firefox浏览器中打开了Web开发人员网络面板,并具有以下视图:

enter image description here

起初,我认为这是我春天的错误配置,但我跑了一个卷发:

  curl --data "payload=testing" http://localhost:8093/login

这进入我的网络服务就好了。所以有一些关于Angular编码参数的方式。

我找到了这个页面:https://github.com/angular/angular/issues/19535,但不确定它是否相关。

1 个答案:

答案 0 :(得分:2)

http.post的第二个参数是内容正文。您可以通过以下方式传递URL参数:

const urlParams = new HttpParams()
  .set('payload', 'testing...');

 return this.http.post<String>(`${this.loginUrl}?${urlParams}`, '',{headers: this.headers});

如果你想将url parms传递到正文中,那么:

  login(credentials): Observable<String> {
    const body = new HttpParams()
      .set('payload', 'testing...');

    let bodyValue = body.toString()
    return this.http.post<String>(this.loginUrl, bodyValue,{headers: this.headers})
  }