简体   繁体   English

在ionic框架3.x的何处添加REST API消耗功能?

[英]Where to add REST API consuming functionality in ionic framework 3.x?

It has been a while since I used ionic framework. 自从我使用离子骨架以来已经有一段时间了。 Last time, I used it it was version 1 and therefore, every page that i created with ionic creator had a controller for it where I used to add js code for consuming my REST framework. 上一次,我使用的是版本1,因此,我用ionic creator创建的每个页面都有一个控制器,用于添加js代码以使用我的REST框架。

This time I downloaded my ionic creator app and the directory structure is completely changed. 这次我下载了我的离子创作器应用程序,目录结构已完全更改。 There are no js controllers like in angularJS. 没有像angularJS中的js控制器。 For each page there is a .ts file containing the following code: 对于每个页面,都有一个.ts文件,其中包含以下代码:

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';

@Component({
  selector: 'page-page1',
  templateUrl: 'page1.html'
})
export class page1Page {

  constructor(public navCtrl: NavController) {
  }

}

Any idea or online tutorial if anyone can suggest? 如果有人可以提出任何想法或在线教程?

You need to create providers to request REST API. 您需要创建提供程序来请求REST API。 Posting example : 发布示例:

Your Provider( rest-api.ts ) 您的提供者( rest-api.ts

import { Injectable } from '@angular/core';
import { Http,Headers} from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/timeout';
import 'rxjs/add/observable/throw';


@Injectable()
export class RestApiProvider {

  private apiUrl = 'Your server api url';

    constructor(public http: Http) {
    console.log('Hello RestApiProvider Provider');
    }

    Login(dataparam){
        let param = 'your data params';
        return this.http.get(this.apiUrl+param)
                    .timeout(30000)
            .map(res => res.json())
            .catch(this.handleError);
      }


      handleError(error: any) {
        let errorMsg = error.message || 'Network Error ! Try again later.';
        return Observable.throw(errorMsg);
    }


}

Provider should be inject in ( app.module.ts ) 提供者应注入( app.module.ts

import { HttpModule,Http } from '@angular/http';
import { RestApiProvider } from '../providers/rest-api/rest-api';

@NgModule({
  declarations: [
    .....
  ],
  imports: [
  ........
    HttpModule,
    .......
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    ......
  ],
  providers: [
    ......
    {provide: ErrorHandler, useClass: IonicErrorHandler},
    RestApiProvider,
    ......
  ]
})
export class AppModule {}

Also inject provider in the page from where you want to do HTTP request: mobile-login.ts 还要在要执行HTTP请求的页面中注入提供程序: mobile-login.ts

import { RestApiProvider } from '../../providers/rest-api/rest-api';
..........

@IonicPage()
@Component({
  selector: 'page-mobile-login',
  templateUrl: 'mobile-login.html',
})
export class MobileLoginPage {

  constructor(public navCtrl: NavController, 
    public navParams: NavParams,
    public restProvider: RestApiProvider,
    ) {
  }

yourfunction{
    this.restProvider.Login(your comma seprate data param)
    .subscribe(
            (data: any) => {
                console.log(data)                    
            },
            (err) => {
                      console.log(err);
                    }
    );
}

Above is working example for my Ionic 3 App. 上面是我的Ionic 3 App的工作示例。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM