【问题标题】:Angular 6 Unable to get data from external server API using proxyAngular 6无法使用代理从外部服务器API获取数据
【发布时间】:2020-01-09 14:19:50
【问题描述】:

我正在使用本地 Angular 应用程序,但在从外部服务器上的 API 获取数据时遇到问题。我尝试使用代理,所以我创建了文件 proxyconfig.json 并通过

将它包含在命令行中
ng serve --proxy-config proxyconfig.json

这是内容:

{
    "/api/*": {
    "target": "https://bittrex.com/api/v1.1/public/",
        "secure": false,
        "pathRewrite": {
            "^/api": ""
        },
        "changeOrigin": true
    }
}

我需要传递变量,所以我创建了服务 OrderBookService

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { OrderBook } from './order-book.model';


@Injectable({
    providedIn: 'root',
  })
export class OrderBookService {
    constructor(private httpClient: HttpClient) {

    }
    getOrderBookBittrex(currency1: string, currency2: string): Observable<OrderBook[]> {
        const url = `http://localhost:4200/api/getorderbook?market=${currency1}-${currency2}&type=both`;
        return this.httpClient.get<OrderBook[]>(url);
    }
}

问题是当我想获取这些数据并将其保存到组件中的变量时,路径未正确转换:它正在向 http://localhost:4200/api/getorderbook?market=BTC-LTC&type=both 发送请求,而不是 https://bittrex.com/api/v1.1/public/getorderbook?market=BTC-LTC&type=both

  private getTransfers(): void {
    const currency1 = 'BTC';
    const currency2 = 'LTC';
    this.orderBookService.getOrderBookBittrex(currency1, currency2)
      .subscribe(orders => {
        this.orderBook = orders;
      });
  }

有人知道如何正确操作吗?

当我像这样将所有路径放入 proxconfig.json 时,它工作正常:

{
    "/api/*": {
        "target": "https://bittrex.com/api/v1.1/public/getorderbook?market=BTC-LTC&type=both",
        "secure": false,
        "pathRewrite": {
            "^/api": ""
        },
        "changeOrigin": true
    }
}

但我需要传递变量。

【问题讨论】:

标签: angular api proxy


【解决方案1】:

你编码

getOrderBookBittrex(currency1: string, currency2: string): Observable<OrderBook[]> {
    const url = `http://localhost:4200/api/getorderbook?market=${currency1}-${currency2}&type=both`;
    return this.httpClient.get<OrderBook[]>(url);
}

只需更改网址即可

getOrderBookBittrex(currency1: string, currency2: string): Observable<OrderBook[]> {
    const url = `/api/getorderbook?market=${currency1}-${currency2}&type=both`;
    return this.httpClient.get<OrderBook[]>(url);
}

您不需要在代码中使用http://localhost:4200

还有"pathRewrite": { "^/api": "" }, 也不需要

【讨论】:

  • 有效。您能告诉我如何在不刷新页面的情况下从此 API 服务器自动更新视图吗?
  • 查看 - Reactive Forms - for Forms,您可以将 ngModel 用于任何输出
  • 示例(分页器):someArray - 我们将一些来自服务器的数据 getSome(page) = func 投入服务,获取一页的数据 ------------- --- 在 .ts 文件中 page:number = 1 someArray:any[]=[] someChange(page){ this._req.getSome(page).subscribe( result=>{ this.someArray = result['some_content'] } ) } if .html 文件
    {{elem}}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
相关资源
最近更新 更多