HTTP 获取,Angular
Http GET, Angular
您好,我实现了如下的 get 方法:
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class CourseService {
constructor(private httpClient: HttpClient) { }
private courseUrl: string = 'http://localhost:8080/api/v1/courses';
public getCourses(): Observable<Course[]> {
return this.httpClient.get<Course[]>(this.courseUrl);
}
}
export interface Course {
id: number;
title: string;
startTime: string;
endTime: string;
day: string;
totalPlaces: number;
}
当然是我的pojoclass
而我的组件部分class:
import { Component, OnInit } from '@angular/core';
import * as Feather from 'feather-icons';
import { Course, CourseService } from '../services/course-services.service';
import { PositionEnum } from './position-enum';
@Component({
selector: 'app-admin-dashboard',
templateUrl: './admin-dashboard.component.html',
styleUrls: ['./admin-dashboard.component.css']
})
export class AdminDashboardComponent implements OnInit {
position: PositionEnum;
course: Course[];
constructor(private courseService: CourseService) { }
public get positionEnum(): typeof PositionEnum {
return PositionEnum;
}
ngOnInit(): void {
this.courseService.getCourses().subscribe(value => {
this.course = value;
})
Feather.replace();
}
在 html 文件中,我试图获取有关它是否有效的任何信息,但几次尝试后我什么也没看到。
我试图通过这样的方式显示它:{{ course[0].id }} 或这个 {{ course['0'].id }}。
我很确定 api 有效,因为我收到这样的回复:
[{"id":1,"title":"Analiza matematyczna","startTime":"12:00:00","endTime":"13:30:00","day":"MONDAY","totalPlaces":10},{"id":2,"title":"Programowanie obiektowe","startTime":"15:00:00","endTime":"16:00:00","day":"MONDAY","totalPlaces":15}]
更新:
我发现错误:CORS 策略已阻止从源 'http://localhost:4200' 访问位于 'http://localhost:8080/api/v1/courses' 的 XMLHttpRequest:请求的资源上不存在 'Access-Control-Allow-Origin' header。
有谁知道问题出在哪里?
请尝试添加 header Access-Control-Allow-Origin: *
此外,不要忘记授予 Cors 保护服务器的权限。你可以看看这个。 Cross-Origin Request Headers(CORS) with PHP headers
为后端添加了@CrossOrigin(origins = "http://localhost:4200"),一切正常
您好,我实现了如下的 get 方法:
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class CourseService {
constructor(private httpClient: HttpClient) { }
private courseUrl: string = 'http://localhost:8080/api/v1/courses';
public getCourses(): Observable<Course[]> {
return this.httpClient.get<Course[]>(this.courseUrl);
}
}
export interface Course {
id: number;
title: string;
startTime: string;
endTime: string;
day: string;
totalPlaces: number;
}
当然是我的pojoclass
而我的组件部分class:
import { Component, OnInit } from '@angular/core';
import * as Feather from 'feather-icons';
import { Course, CourseService } from '../services/course-services.service';
import { PositionEnum } from './position-enum';
@Component({
selector: 'app-admin-dashboard',
templateUrl: './admin-dashboard.component.html',
styleUrls: ['./admin-dashboard.component.css']
})
export class AdminDashboardComponent implements OnInit {
position: PositionEnum;
course: Course[];
constructor(private courseService: CourseService) { }
public get positionEnum(): typeof PositionEnum {
return PositionEnum;
}
ngOnInit(): void {
this.courseService.getCourses().subscribe(value => {
this.course = value;
})
Feather.replace();
}
在 html 文件中,我试图获取有关它是否有效的任何信息,但几次尝试后我什么也没看到。 我试图通过这样的方式显示它:{{ course[0].id }} 或这个 {{ course['0'].id }}。 我很确定 api 有效,因为我收到这样的回复:
[{"id":1,"title":"Analiza matematyczna","startTime":"12:00:00","endTime":"13:30:00","day":"MONDAY","totalPlaces":10},{"id":2,"title":"Programowanie obiektowe","startTime":"15:00:00","endTime":"16:00:00","day":"MONDAY","totalPlaces":15}]
更新:
我发现错误:CORS 策略已阻止从源 'http://localhost:4200' 访问位于 'http://localhost:8080/api/v1/courses' 的 XMLHttpRequest:请求的资源上不存在 'Access-Control-Allow-Origin' header。
有谁知道问题出在哪里?
请尝试添加 header Access-Control-Allow-Origin: *
此外,不要忘记授予 Cors 保护服务器的权限。你可以看看这个。 Cross-Origin Request Headers(CORS) with PHP headers
为后端添加了@CrossOrigin(origins = "http://localhost:4200"),一切正常