Angular4 - 将表单数据发布到rest api

新手上路,请多包涵

如何将表单数据发布到外部 rest api?

目前我有一个html表单:

 <form [formGroup] = "form" (ngSubmit) = "onSubmit(form.value)">
  <input name="name" formControlName="name">
  <input name="first_name" formControlName="first_name">
  <input name="last_name" formControlName="last_name">
  <button type="submit">Save</button>
 </form>

然后我有在我的 component.ts 文件中处理提交的函数:

   onSubmit = function (user) {
    console.log(user);
    //this.http.post('http://xxx/externalapi/add', user);
  }

但是如何将表单数据发布到我的外部 api 呢?用角度发送表单数据的标准是什么?它只是一个使用表单数据作为 queryParams 的简单发布请求,还是将其转换为 JSON 是标准的。我可以修改 api 来处理发送的任何数据,所以这不是问题。

原文由 user1985273 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 527
2 个回答

好的,事实证明我必须添加 .subscribe() 才能发布它才能做某事。此外,如果我出于某种原因将“用户”直接放入发布请求中,它会使用没有正文的方法“OPTIONS”发送请求。所以我必须自己创建一个 queryParams 字符串。如果有人可以解释这一点或展示一个更好的方法来做到这一点,我会appriciate它。否则,这目前有效:

  onSubmit = function (user) {
    console.log(user);

    var body = "firstname=" + user.firstname + "&lastname=" + user.lastname + "&name=" + user.name;
    this.http.post("http://www.testtttt.com", body).subscribe((data) => {});

  }

编辑:另一个甚至可能更好的解决方案是使用 JSON.stringify(user) 而不是 body。但是 subscribe() 仍然需要。

原文由 user1985273 发布,翻译遵循 CC BY-SA 3.0 许可协议

用于通用 Post & Get 使用表单数据的角度 24 方法

import { Http, Response, Headers, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';

constructor(private _http: Http) { }

get(url: string): Observable < any > {
    return this._http.get(url)
             .map((response: Response) => <any>response.json());
}

post(url: string, model: any): Observable <any> {
    let formData: FormData = new FormData();
    formData.append('id', model.id);
    formData.append('applicationName', model.applicationName);
    return this._http.post(url, formData)
        .map((response: Response) => {
            return response;
        }).catch(this.handleError);
}

原文由 GirishBabuC 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题