创建帖子服务以及POST参数

时间:2018-06-04 19:10:21

标签: angular typescript post

我有一个类似下面的API:
网址:http://test.com/api/

此api具有以下帖子参数:
token: mytoken
content: project
format: json
returnFormat: json

我正在尝试编写一个服务来检索数据。我写的服务是:

import { Http } from '@angular/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';

@Injectable()
export class RedCapTestService {
    parameters: Object = {
        'token': 'mytoken',
        'content': 'project',
        'format': 'json',
        'returnFormat': 'json'
    };
    baseUrl = 'https://test.com/api/';

   constructor(private http: Http) { }

getProjectInfo() {
    return this.http.post(this.baseUrl, this.parameters).map(res => res.json()).catch(this.handleError);
}

}

我有一个测试组件,我测试该服务。 在test.component.ts

export class RedcapTestProjectInfoComponent implements OnInit {
project: any = {};

 constructor(private redcapService: RedCapTestService) { }

ngOnInit() {
  this.getProjectInfo();
}

getProjectInfo() {
  this.redcapService.getProjectInfo().subscribe(project => {
    this.project = project;
  }, error => {
    console.log('error occured');
  });
}

}

这是我的html teamplate:

<h1>Project info</h1>

<p>Project ID: {{ project.project_id }} </p>
<p>Project Title: {{ project.project_title }} </p>

这给了我没有错误但没有数据。 错误是: OPTIONS https://test.com/api/ 501 (Not Implemented) Failed to load https://test.com/api/: Response for preflight has invalid HTTP status code 501.

如何使用此API以及这些POST参数来获取数据。

PS:我可以通过邮递员检索这些数据。

1 个答案:

答案 0 :(得分:0)

经过一番研究,我发现在我的情况下,我应该在visual_recognition = VisualRecognitionV3( version='2016-05-20', api_key='###########################', url='https://gateway.watsonplatform.net/visual-recognition/api') classes = visual_recognition.classify(url='https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Cat_November_2010-1a.jpg/449px-Cat_November_2010-1a.jpg') print(json.dumps(classes, indent=2) 中发送这些参数,如下所示:

FormData()

如果您使用getProjectInfo() { const formData = new FormData(); formData.append('token', 'mytoken'); formData.append('content', 'project'); formData.append('format', 'json'); formData.append('returnFormat', 'json'); return this.http.post(this.baseUrl, formData).map(res => res.json()).catch(this.handleError); } ,则只需删除HttpClient运算符即可。