Java 使用Angular和Spring引导从本地主机获取数据
我正在使用Angular和Spring Boot构建一个web应用程序。我试图从localhost获取数据,但什么也得不到 这是来自服务器的json数据 这是我的服务tsJava 使用Angular和Spring引导从本地主机获取数据,java,json,angular,spring,spring-boot,Java,Json,Angular,Spring,Spring Boot,我正在使用Angular和Spring Boot构建一个web应用程序。我试图从localhost获取数据,但什么也得不到 这是来自服务器的json数据 这是我的服务ts import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import {map, catchError} from "rxjs/operators"; import { Observable,
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import {map, catchError} from "rxjs/operators";
import { Observable, throwError } from 'rxjs';
import {Entreprise} from '../modules/entreprise';
@Injectable({
providedIn: 'root'
})
export class EntrepriseService {
constructor(private http:HttpClient) { }
public getEntreprises():Observable<Entreprise>{
return this.http.get<Entreprise>("http://localhost:8080/entreprises/all");
}
}
这是html模板
<h4>entreprises</h4>
<button (click)="onGetEntreprises()">get </button>
<p *ngFor="let ee of entreprises">{{ee.content.name}}</p>
企业
收到
{{ee.content.name}
这就是我点击按钮时的错误
首先,您应该在
p
标记中添加一个*ngIf
,因为如果Enterprise
的数组未初始化(它是async
=>API调用),则可能会出现空错误
另外,这也是实际的问题,您定义了一个模型类引用,但没有定义一个数组,它实际上是后端返回的 如果您这样做,可能会更好:
this.enterprise = data.content
而this.enterprises
看起来有点像这样:
enterprises: Enterprise[];
此外,您可能还没有在Spring方面实施CORS策略。这里有一篇关于这方面的好文章:。 出于测试目的,将
@CrossOrigin(origins=“*”)
添加到@RestController
类中。这对开发是有好处的,但在生产中您应该避免使用defo,因为这将允许所有源代码请求您的API
更多提示:
- 确保您的模型类在角度方面确实具有来自后端的所有字段
- 是否确实导入了
HttpClientModule
更新您的问题,告诉我它是否有效。您确定没有使用https吗?没有,我没有使用https。您必须尝试调试此问题。我看不出有什么问题。但是为了调试,使用一个普通的JavaScript文件并使用如下的获取请求:fetch(“)。然后((response)=>response.json())。然后((data)=>console.log(data))谢谢它的工作。我在我的服务器上添加了@CrossOrigin(origins=“*”),它工作了
enterprises: Enterprise[];