【问题标题】:Angular / Spring Boot : Angular Service making Http requests to localhost:4200 instead of localhost:8080Angular / Spring Boot:Angular Service 向 localhost:4200 而不是 localhost:8080 发出 Http 请求
【发布时间】:2021-06-28 07:43:09
【问题描述】:

我有一个 Angular + Spring Boot 项目。 Angular 项目包含向运行在端口 8080 上的 Spring Boot 应用程序发出 Http 请求的服务。 奇怪的是,至少我的一项服务是对 localhost:4200 而不是 localhost:8080 进行 Http 调用,即使我认为我已经设置了正确的配置。

角度服务:

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Housing } from '../_models/housing';
import { Observable, of } from 'rxjs';
import {catchError} from 'rxjs/internal/operators';

const httpOptions = {
  headers: new HttpHeaders({
    'Content-Type':  'application/json',
    'Authorization': 'jwt-token',
    'Access-Control-Allow-Origin': '*'
  })
};
@Injectable({
  providedIn: 'root'
})

export class HousingService {

  housingList: Housing[];

  constructor(private http: HttpClient) {}

  getAll() {
    return this.http.get<Housing[]>('/api/v1/housing/getAllHousing');
  } 
  getHousingById(id) {
    return this.http.get<Housing>('/api/v1/housing/getHouseById/' + id);
  }
  fetchData(id): Promise<Housing>{
    const promise = this.http.get<Housing>('/api/v1/housing/getHouseById/' + id).toPromise();
    return promise
  }
  addHousing(housing: Housing): Observable<Housing>{
    return this.http.put<Housing>('/api/v1/housing/addOrUpdateHouse', housing, httpOptions)
  }
  enableOrDisableHouseById(id: String){
    return this.http.put<Housing>('/api/v1/housing/enableOrDisableHouseById/'+ id, httpOptions)
  }
  deleteHousing(id): Observable<Housing>{
    return this.http.delete<Housing>('/api/v1/housing/deleteHouseById/' + id, httpOptions)
  }
}

项目根目录下的proxy.conf.json文件:

{
    "/api/*": {
       "target": "http://localhost:8080/",
       "secure": false,
       "changeOrigin": true,
       "logLevel": "debug"
    }
 }

我正在使用以下命令启动我的 Angular 服务器: ng serve --proxy-config proxy.conf.json

错误信息:

【问题讨论】:

  • 你为什么不使用这个? this.http.get('localhost:8080/api/v1/housing/getAllHousing');
  • @behroozbc 我不想这样做,因为我确信有更好的方法,而不是在每个 Http 调用中都放置基本 url
  • 您是否将代理配置添加到 angular.json?

标签: angular spring-boot


【解决方案1】:

您可以配置您的 webpack 代理,它将您的请求转发到适当的位置。

  devServer: {
    ...
    proxy: {
       '/api/v1': 'http://localhost:8080',
    } 
  }

【讨论】:

  • wabpack 构建配置文件
  • 我没有这样的文件
猜你喜欢
  • 1970-01-01
  • 2020-05-08
  • 2022-01-26
  • 1970-01-01
  • 2019-05-27
  • 2020-11-30
  • 1970-01-01
  • 2021-04-20
  • 2019-06-04
相关资源
最近更新 更多