Задать вопрос
@ebaysher

В чем ошибка при POST запросе?

Добрый день, во фронтенд разработке совсем недавно , так что прошу отнестись с пониманием
Проблема такая:
Отправляю пост запрос к веб апи с введенными данными и возникает ошибка со статусом 400.
В payload пусто, в response такая ошибка The JSON value could not be converted to air_astana_webapi.Models.AirLine. Path: $ | LineNumber: 0 | BytePositionInLine: 1."

Вот код сервиса:
addAirline(data:any)
  {
   readonly airlineAPIUrl = 'https://localhost:44336/api'
    debugger
    return this.http.post(this.airlineAPIUrl + '/airlines', data);
  }


код с компонента формы откуда вводятся данные:

AddAirline()
  {
    debugger
    this.airLine.Id != 0;
    this.airLine.companyName = this.company;
    this.airLine.airLineStatus = this.status;
    this.airLine.whereFrom = this.where;
    this.airLine.whereFromTime = moment(this.timeWhere,"HH:mm").toISOString();
    this.airLine.from = this.from;
    this.airLine.fromTime = moment(this.timeFrom,"HH:mm").toISOString();
    this.airLine.airLineDelayTime = this.delay;
    
    this.service.addAirline(this.airLine).subscribe(res => {this.refreshAirlinesList()}, error=> {console.log(error)/*alert('Error')*/});

  }


пост метод в контроллере:
[HttpPost]
        [Authorize]
        public async Task<ActionResult<AirLine>> PostAirLines(AirLine airLine)
        {
            if (airLine == null)
            {
                return BadRequest();
            }
            else
            _context.AirLines.Add(airLine);
            await _context.SaveChangesAsync();
            return CreatedAtAction("GetAirline", new { id = airLine.Id }, airLine);
        }

И класс в апи с этими свойствами
public class AirLine
    {
        public int Id { get; set; }

        public string CompanyName { get; set; }

        [StringLength(30)]
        public string AirLineStatus { get; set; } = string.Empty;

        [StringLength(100)]
        public string WhereFrom { get; set; } = string.Empty;
        public DateTime WhereFromTime { get; set; }

        [StringLength(100)]
        public string From { get; set; } = string.Empty;
        public DateTime FromTime { get; set; }

        public int AirLineDelayTime { get; set; }
    }


Все параметры в пост запросе соответствуют с теми что в классе airline

Буду признателен любой помощи и подсказке.
61dec91927da2276569196.png61dec92e5146b924901082.jpeg

В свагере все работает как надо и проблема во фронтенд части как я понимаю.
  • Вопрос задан
  • 516 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Voland69
На скрине Id: null, в то время как в классе int - который null быть не может.
Ну и пожалуй проверить сериализацию DateTime можно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы