将数据从服务发送到控制器

时间:2016-06-04 22:23:51

标签: http angular

我有从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 ???
            });

 };

2 个答案:

答案 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