如何将包含Object而不是字符串的body发布到http api? angular2?

时间:2016-01-14 10:49:24

标签: javascript angular http post

我在以下服务中使用angular2 http.post

import {Injectable, Inject} from 'angular2/core'
import {Http, Response, RequestOptions, Headers, Request, RequestMethod} from 'angular2/http';

import 'rxjs/add/operator/map';

//Globals
const URL : string = 'http://myurl.com/listings';

@Injectable()
export class ListingsService {

  //Constructor
  constructor(public http: Http) {}

  postListing(data) {
   this.http.post(URL, data).map(res => res.json())
  }

}

问题是我只能在http.post内以字符串形式发布数据,因为我需要传入一个Object。

3 个答案:

答案 0 :(得分:5)

这样做的一种方法是使用JSON.stringify创建一个对象字符串,然后在服务器端使用JSON.parse。

答案 1 :(得分:1)

您可能需要在标题中设置Content-Type。您可以按如下方式设置默认标头。

class MyOptions extends RequestOptions {
constructor() {
    super({
        headers: new Headers({
            'Content-Type': 'application/json; charset=utf-8',
            'Accept': 'application/json'
        })
    });
   }
}

bootstrap(AppComponent, [
   ...,
   provide(RequestOptions, {useClass: MyOptions})
]);

答案 2 :(得分:0)

正如binariedMe所提到的,JSON.stringify会做你想要的。 如果您想发送二进制数据,可能需要查看BSON:https://github.com/mongodb/js-bson