#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». Спасибо еще раз