加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

ionic / angular-如何正确使用接口?

发布时间:2020-12-17 06:46:51 所属栏目:安全 来源:网络整理
导读:我对角度/离子应用程序开发很新.我在某处读了以下内容 接口仅在编译时.这样只允许您检查收到的预期数据是否遵循特定结构. 我正在创建一个离子应用程序,API服务会将一些数据返回给用户.假设它是一个登录函数,API服务返回该数据. 我在Ionic中创建了一个提供程
我对角度/离子应用程序开发很新.我在某处读了以下内容

接口仅在编译时.这样只允许您检查收到的预期数据是否遵循特定结构.

我正在创建一个离子应用程序,API服务会将一些数据返回给用户.假设它是一个登录函数,API服务返回该数据.

我在Ionic中创建了一个提供程序,使用HTTPClient从API调用API.

//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的接口

Login组件的代码如下:

//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)如果我在一个提供商中有多个接口,比如说,一个用于登录数据,另一个用于用户个人资料数据,我应该在哪里放置它?我可以将它保存在单独的文件中并导出吗?我没有看到任何离子命令来创建接口

谢谢!我不想从错误开始我的职业生涯.这就是为什么我想发布这个.

解决方法

Typescript中的接口仅提供对象形状的描述.如果在TypeScript中创建对象,则编译器可以判断该对象是否与接口兼容.在运行时,接口被擦除,因此不会检查对象是否与接口兼容.当您使用post< T>发出请求时你基本上告诉编译器你期望作为响应的对象的形状如果是T但是没有进行检查以确保这一点.

您可以在文件中拥有任意数量的接口,并且可以从该文件中导出它们,将它们导入到另一个文件中,就像您在类或函数中一样.您如何组织代码取决于您自己.

如果要确保在运行时正确实现对象,请参阅here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读