Ошибка: 422 (необработанный объект). Angular4

Я пытаюсь отправить данные из Angular4 на localhost:4200 в API на localhost:8000. Я хорошо работаю с почтальоном, но не с Angular. Тогда я получаю:

Не удалось загрузить ресурс: сервер ответил со статусом 422 (Unprocessable Entity)

Это сервис, который отправляет сообщения в API:

@Injectable()
export class ApiService {
    constructor(private http: Http) { }
    login(username: string, password: string): Observable<Response>{
        const url = 'http://localhost:8000/login';
        const json = JSON.stringify({username: username, password: password});
        const headers: Headers = new Headers();
        headers.append('Content-Type', 'application/json; charset=UTF-8');
        return this.http.post(url, json, headers )
            .map(res => res.json());
    }
}

Это код, который запускает метод

   logIn(user: string, password: string){
      this.apiService.login(user, password).subscribe(
          data => console.log(data),
          error => console.log(error)
      );
    }

3 ответа

У меня также возникает такая же проблема при использовании angular-in-memory-web-api. Проблема заключалась в создании InMemoryDbService, я не добавил первичный ключ, такой как id. после добавления идентификатора в экземпляр createDb он отлично работает для меня.



import { Injectable } from '@angular/core';
import { InMemoryDbService } from 'angular-in-memory-web-api';

@Injectable({
  providedIn: 'root'
})
export class DataService implements InMemoryDbService {

  constructor() { }
  createDb() {

    let users = [
      {**id: 1**, username: "Sandy", firstname: "Sandesh", lastname: "K", password: 
        "XXXX", description: "Hi, Going to save data", gender: "Male" }
    ];
    return { users };

  }
}

Код состояния 422 (Unprocessable Entity) означает, что сервер понимает тип содержимого объекта запроса (следовательно, код состояния 415(Unsupported Media Type) является неподходящим), и синтаксис объекта запроса является правильным (таким образом, 400 (неверный запрос)) код состояния не подходит), но не удалось обработать содержащиеся в нем инструкции.

Например, это условие ошибки может возникать, если тело запроса XML содержит правильно сформированные (то есть синтаксически правильные), но семантически ошибочные инструкции XML.

Загляните в свой бэкенд, в функции удаления это обычно происходит, когда вы вызываете метод DELETE и пытаетесь обработать некоторые данные из тела, но DELETE не имеет тела, посмотрите, нет ли у вас что-то в вашем удалении нравиться:

      err := c.BodyParser(&user)

здесь проблема с BodyParser, ты не можешь этого сделать, потому что у тебя нет тела

Другие вопросы по тегам