{"Message": "Запрашиваемый ресурс не поддерживает http-метод" PUT "."} - PullRequest
0 голосов
/ 10 апреля 2020

(Получить сообщение и удалить работает, но Put не работает .. Почему? Под ошибкой {"Message": "Запрашиваемый ресурс не поддерживает http-метод 'PUT'."}

 empObj = new Employee();

onUpdate () {

 this._empService.updateEmployee(this.empObj).subscribe(res => {
  this.message = "data updated successfully";

})

}

enter code here

updateEmployee (сотрудник: сотрудник): наблюдаемый {

var url = "https://localhost:44382/api/UserTables/";
return this._http.put<number>(url, employee.Id)

}

1 Ответ

2 голосов
/ 10 апреля 2020

Похоже, проблема на стороне API, а не на передней панели. В этом сообщении говорится, что никто не реализовал конечную точку для PUT на стороне сервера. И, если кто-то исправит это, он, вероятно, будет следовать соглашению для PUT, в котором говорится, что уникальный идентификатор должен быть последней частью URL:

updateEmployee(employee: Employee): Observable<number> {
  const url = `https://localhost:44382/api/UserTables/${employee.Id}`;

  // Are you sure the return of PUT will a number?
  return this._http.put<number>(url, employee)
}

Если вы пытаетесь создать новый пользователь (что, я думаю, здесь не так), вы должны использовать POST (чисто по определению => PUT считается идемпотентным [1] , POST нет):

createEmployee(employee: Employee): Observable<Employee> {
  const url = `https://localhost:44382/api/UserTables;
  return this._http.post<Employee>(url, employee);
}

[1] идемпотент: При использовании PUT, если вы повторяете один и тот же запрос один и тот же (обновляя одни и те же поля с одинаковыми значениями полей в одной и той же записи базы данных) несколько раз, результат должно быть таким же - не учитывая возможную информацию аудита. С другой стороны, если вы повторите один и тот же POST-запрос N раз, вы, возможно, создадите N новых записей в базе данных.

...