我有从API获取数据的服务和方法。如何在控制器中获取此数据?
getRoom(id) {
let headers = new Headers({ 'Content-Type': 'application/json' })
let body = JSON.stringify({id});
let options = new RequestOptions({ headers: headers });
this._http.post('/api/forum/findRoom', body, options)
// .map(res => console.log(res))
.subscribe(res => {
// return ???
});
};
答案 0 :(得分:1)
注意:请输入此处未显示的所需内容。
export class sharedService{
getRoom(id) {
let headers = new Headers({ 'Content-Type': 'application/json' })
let body = JSON.stringify({id});
let options = new RequestOptions({ headers: headers });
return this._http.post('/api/forum/findRoom', body, options) <----return keyword
.map(res => console.log(res))
}
}
<强> main.ts 强>
import {AppComponent} from './AppComponent' <---path to AppComponent
import {sharedService} from './sharedService' <--- path to sharedService
bootstrap(AppComponent,[sharedService]); <----this injection will create single instance of sharedService.
<强> AppComponent.ts 强>
import {sharedService} from './sharedService' <---path to sharedService
export class AppComponent
{
constructor(private ss:sharedService) <--- dependency injection
{
}
ngOnInit(){
ss.getRoom(2).subscribe( <------subscribe to the service
(data) => {
this.result=data;
},
err=>console.log(err),
()=>console.log('done')
);
}
}
答案 1 :(得分:0)
由于您尚未在未显示进口情况的情况下发布正确答案,请在此处查看
现在确保已导入所有必需的依赖项以进行http请求。现在您可以将此代码用作shared_service
getRoom(id) {
let headers = new Headers();
headers.append("Content-Type", 'application/json'); // header portion ends here
let body = JSON.stringify({id}); // body ends here
let options = new RequestOptions({
method: RequestMethod.Post,
url: '/api/forum/findRoom',
headers: headers,
body: body
})
return this.http.request(new Request(options))
.map((res: Response) => {
if (res) {
return [{ status: res.status, json: res.json() }]
}
});
};
现在,这将创建您的发布请求的共享服务。现在每当你需要在控制器(类)中获取数据(响应)时。比你只需要导入这个文件并使用类名作为前缀调用名为getRoom()
的方法。然后在那里订阅获取这样的数据: -
class_name.getRoom('your_data')
.subscribe((data) => { console.log(data);}, <------subscribe to the service
err=>console.log(err),
()=>console.log('done'));
我希望这能清除与Http相关的所有内容。如果你在这里有任何疑问评论。
也可以使用http获取请求,请参阅此处 Working Example of Http