【发布时间】:2018-08-01 20:59:58
【问题描述】:
我对 angular/ionic 应用程序开发很陌生。我在某处读到以下内容
接口仅在编译时。这仅允许您检查接收到的预期数据是否遵循特定结构。
我正在制作一个离子应用程序,API 服务将一些数据返回给用户。假设它是一个登录函数,API 服务为此返回数据。
我在 Ionic 中创建了一个提供程序,从中使用 HTTPClient 对 API 进行 HTTP 调用。
//Provider
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
interface LoginResponse {
success: boolean;
message: string;
token: string;
userId: number;
}
@Injectable()
export class LoginServicesProvider {
constructor(public http: HttpClient) {
}
login(reqData): Observable<LoginResponse[]> {
return this.http.post<LoginResponse[]>('localhost:3000/api/login', reqData);
}
}
如你所见,我创建了一个名为 LoginResponse 的接口
而登录组件的代码如下:
//Component
import { LoginServicesProvider } from './../../providers/login-services/login-services';
import { Component } from '@angular/core';
import { Observable } from 'rxjs/Observable';
@Component({
selector: 'page-login-page',
templateUrl: 'login-page.html',
})
export class LoginPage {
constructor(private loginService: LoginServicesProvider) {
}
onSubmit() {
let reqParams = {
email: 'afakeemail@id.com',
password: 'password',
};
this.loginService.login(reqParams).subscribe(res => {
console.log('success');
});
}
}
对于这个例子,我只是向控制台打印一条消息。
现在是我的问题
1) 如前所述,我的 LoginResponse 接口是否检查接收到的数据?如果没有,我应该如何/在哪里实现该签入提供程序或组件?
2) 如果我在单个提供程序中有多个接口,比如说,一个用于登录数据,另一个用于用户配置文件数据或其他什么,我应该把它放在哪里?我可以将其保存在单独的文件中并导出吗?我没有看到任何用于创建接口的离子命令
谢谢!我不想从错误开始我的职业生涯。这就是为什么我想发布这个。
【问题讨论】:
-
接口可以像任何其他结构一样导出。不要过度依赖脚手架工具来为您编写代码,因为您必须自己维护它(即没有离子命令 -> 谁在乎?)。使用接口 是 描述 HTTP 响应类型的正确方法,但与所有类型一样,它们只是编译时的,不添加任何行为。如果您不知道服务器生成的响应对象的形状,则必须手动检查。
-
我知道服务器产生的响应对象的形状。我根据那个创建了那个接口,但是如果服务器返回的响应有点大怎么办。我应该单独检查每个对象的正确数据类型吗? @AluanHaddad
-
这是一个信任问题,如果你知道服务器响应匹配,我不会担心。但也不要根据性能来选择。你也可以find this interesting
标签: angular typescript ionic-framework ionic2