【问题标题】:Angular back end service call without rest call角后端服务调用没有休息调用
【发布时间】:2019-03-12 17:45:18
【问题描述】:

是否可以在没有 REST 特定方式的情况下从 Angular 4 调用后端服务?

我想实现一个 GUI,但使用 REST 受到限制,所以我想要其他方式来调用我的服务。

简而言之,我想创建一个传统的 MVC 项目,其中 Angular 是 VIEW。其余部分将保持与传统框架一样。

【问题讨论】:

  • 你可以使用 WebSockets
  • 您也可以使用服务器端事件。 stackoverflow.com/questions/40987560/…
  • 在这些技术中,我还必须在服务器端实现我不想要的 REST API,我想创建一个传统的 MVC 项目,其中 Angular 是 VIEW ...其余的东西将保持不变是。

标签: angular angular-services


【解决方案1】:

您可以使用 WebSockets 与 Angular 应用程序的后端通信。

WebSocket 是与 HTTP 不同的协议,它可以在 Web 客户端(例如浏览器)和 Web 服务器之间以较低的开销进行交互。在 TLS 加密连接的情况下,通信通过 TCP 端口号 80 或 443 完成。

服务示例:Real Time Apps with TypeScript: Integrating Web Sockets, Node & Angular

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Observer } from 'rxjs/Observer';
import { Message } from '../model/message';
import { Event } from '../model/event';

import * as socketIo from 'socket.io-client';

const SERVER_URL = 'http://localhost:8080';

@Injectable()
export class SocketService {
    private socket;

    public initSocket(): void {
        this.socket = socketIo(SERVER_URL);
    }

    public send(message: Message): void {
        this.socket.emit('message', message);
    }

    public onMessage(): Observable<Message> {
        return new Observable<Message>(observer => {
            this.socket.on('message', (data: Message) => observer.next(data));
        });
    }

    public onEvent(event: Event): Observable<any> {
        return new Observable<Event>(observer => {
            this.socket.on(event, () => observer.next());
        });
    }
} 

【讨论】:

  • 在这些技术中,我还必须在服务器端实现我不想要的 REST API,我想创建一个传统的 MVC 项目,其中 Angular 是 VIEW ...其余的将保持不变是。
猜你喜欢
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 2019-10-08
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多