Проблема с получением запроса Angular JSON от ASP.NET Основной api

#json #.net #angular #api #asp.net-core

#json #.net #угловой #API #asp.net-ядро

Вопрос:

Я пытаюсь создать интерфейс Angular Asp.Net Базовый серверный проект api. У меня был метод get в моем контроллере api, который возвращает JSON-массив «ActorDTO». Я успешно протестировал свой метод GET в приложении Postman, но когда я начал разрабатывать свою угловую часть проекта, запрос работает (нет ошибок консоли, таких как BadRequest и т. Д.), Но мой локальный массив объекта «Актер» не определен. Я не могу найти свою ошибку, пожалуйста, помогите мне.

Мой метод контроллера:

 [HttpGet]
    public async Task<IEnumerable<ActorDTO>> getActors()
    {
        var entities = await _context.actors.ToListAsync();
        return _mapper.Map<List<Actor>, List<ActorDTO>>(entities);
    }
 

Субъект-объект:

  public class Actor
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
    public string Fathername { get; set; }
    public string Country { get; set; }
    public string CountFilms { get; set; }
    public string Description { get; set; }
    public int BirthYear { get; set; }
    public int Age { get; set; }
    public string PictureUrl { get; set; }
}
 

Моя модель ActorDTO:

 public class ActorDTO
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
    public string Fathername { get; set; }
    public string Country { get; set; }
    public string CountFilms { get; set; }
    public string Description { get; set; }
    public int BirthYear { get; set; }
    public int Age { get; set; }
    public string PictureUrl { get; set; }
}
 

Модель субъекта Typescript:

 export class ActorModel{
public Id: number;
public Name: string;
public Surname: string;
public Fathername: string;
public Country: string;
public CountFilms: number;
public Description: string;
public BirthYear: number;
public Age: number;
public PictureUrl: string;

construstor(){
    this.Id = null;
    this.Name = null;
    this.Surname = null;
    this.Fathername = null;
    this.Country = null;
    this.CountFilms = null;
    this.Description = null;
    this.BirthYear = null;
    this.Age = null;
    this.PictureUrl = null;
}
 

}

Служба Angular Actor:

 import { ActorModel } from './../../Models/actor.model';
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { ApiResult } from 'src/app/Models/result.model';


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

  constructor(private http: HttpClient) { }
  baseUrl = 'api/actor/';

  getAllActor(){
    return this.http.get(this.baseUrl)
  }

  getActor(id: number){
    return this.http.get(this.baseUrl   '/get/'   id);
  }

  addActor(model : ActorModel){
    return this.http.post<ApiResult>(this.baseUrl   '/addactor/' , model);
  }
 

}

actor.component.ts, где я подписываюсь на получение запроса

 import { Router } from '@angular/router';
import { ActorModel } from './../Models/actor.model';
import { ActorService } from './../services/actor-service/actor.service';
import { Component, OnInit } from '@angular/core';

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

  constructor(private actorService: ActorService, private router: Router) { }

  thisUrl: string;
  actors: ActorModel[] = [];

  ngOnInit() {
    this.thisUrl = this.router.url;
    this.actorService.getAllActor().subscribe(
      (list: ActorModel[]) => {
        this.actors = list;
        console.log(this.actors[0].Name);
      }
    )
  }

}
 

console.log(this.actors[0].Name) — здесь, когда я проверяю консоль, я вижу «неопределенный». Что не так? Я действительно не могу понять.

Комментарии:

1. baseUrl кажется подозрительным с завершающим ‘/’. this.baseUrl '/get/' даст api/actor//get/'

2. @Ревет. исправлено, но все еще не работает, точно так же не определено

3. Пожалуйста, сравните URL-адреса, которые вы используете в Postman, с URL-адресами, которые вы используете в своем js. Я подозреваю, что у вас возникли проблемы с маршрутизацией.

4. @Ревет. Спасибо. Да, this.http не был определен, поэтому строка для ‘api /get’ была пустой без «»localhost:xxxx». Спасибо еще раз