【问题标题】:Angular HttpErrorResponse GET RequestAngular HttpErrorResponse GET 请求
【发布时间】:2021-11-24 00:14:07
【问题描述】:

我有一个简单的 Quarkus 项目,想用 HttpClient 在 Angular 表中显示数据。我也有一个 CORS 过滤器。无论如何,我收到以下错误: Angular table with no date, HttpErrorResponse Status 0

service.ts

import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { School } from './model/school';

@Injectable({
  providedIn: 'root'
})
export class SchoolService {

  url = "localhost:8080/school"

  constructor(public http: HttpClient) { }

  getAll(): Observable<School[]> {
    return this.http.get<School[]>(this.url);
  }

  getById(id: number): Observable<School> {
    const url = "locahlost:8080/school/{id}";
    return this.http.get<School>(url);
  }

}

组件的ts

import { Component, OnInit } from '@angular/core';
import { School } from '../model/school';
import { SchoolService } from '../school.service';

@Component({
  selector: 'app-dashboard',
  templateUrl: './dashboard.component.html',
  styleUrls: ['./dashboard.component.css']
})
export class DashboardComponent implements OnInit {

  schools: School[] = [];
  
  constructor(public schoolService: SchoolService) { }

  ngOnInit(): void {
    this.schoolService.getAll().subscribe(e => {
      this.schools = e;
    });
  }

}

html

<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Street</th>
        </tr>
    </thead>
    <tbody>
        <tr *ngFor="let school of schools">
            <td>{{school.id}}</td>
            <td>{{school.name}}</td>
            <td>{{school.street}}</td>
        </tr>
    </tbody>
</table>

服务器模型

package model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class School {

    @Id
    @GeneratedValue
    private int id;
    private String name;
    private String street;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }
}

资源

package rest;

import model.School;

import javax.inject.Inject;
import javax.transaction.Transactional;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.List;

@Path("school")
@Produces(MediaType.APPLICATION_JSON)
@Transactional
public class SchoolResource {

    @Inject
    SchoolDao dao;

    @GET
    public List<School> getAll() {
        return dao.getAll();
    }

    @Path("id")
    @GET
    public School getById(@PathParam("id") int id) {
        return dao.getById(id);
    }

}

package rest;

import model.School;

import javax.enterprise.context.Dependent;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import java.util.List;

@Dependent
public class SchoolDao {

    @Inject
    EntityManager em;

    public List<School> getAll() {
        return em.createQuery("select s from School s", School.class).getResultList();
    }

    public School getById(int id) {
        return em.find(School.class, id);
    }

}

提前谢谢你,我认为问题一定出在服务器上,因为我已经尝试使用 JSON 文件而不是 Quarkus 数据显示数据,它确实有效。

【问题讨论】:

  • 也许你的url前面应该有一个http://,或者https://?控制台有错误吗?

标签: java angular typescript rest httpclient


【解决方案1】:

正如@R.Richards提到的in a comment,在服务文件的url前面加上“http://”解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-04
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    相关资源
    最近更新 更多