HTTP Delete отправлено с Angular HTTP клиент запущен - не получен сервером - PullRequest
0 голосов
/ 24 марта 2020

Я работаю над приложением, включающим CRUD-функциональность. Я использую Spring для реализации бэкэнда, Angular для фронтэнда. Во внешнем интерфейсе я использую http-клиент Angular, подобный этому, для удаления объекта (для краткости следующий код сокращен):

Компонент:

export class RecipeComponent implements OnInit {

  constructor(private recipeService : RecipeService) { }

    deleteElement (id : number) {
        this.recipeService.deleteRecipe(id).subscribe();
    }
}

Сервис :

export class RecipeService {

    deleteRecipe (id : number) : Observable<{}> {
      return this.http.delete('http://localhost:8080/recipe/' + id);
    }

  constructor( private http: HttpClient ) { }
}

При выполнении функции я могу найти запрос http-удаления на вкладке сети: enter image description here

Spring Controller выглядит (сокращенно) вот так:

@ControllerAdvice
@CrossOrigin(origins = "http://localhost:4200")
@RequestMapping(path="/recipe")
public class RESTController {
    @Autowired
    private RecipeRepository recipeRepository;


@DeleteMapping(path="/{id}")
public @ResponseBody ResponseEntity deleteRecipe (@RequestBody Recipe deletedRecipe, @PathVariable("id") int id) {

    try {
        [...]
        }
    } catch (RecipeNotFoundException e) {
        [...]       
    }
}


}

Тем не менее, мой бэкэнд не получает запрос. Странно то, что Posts или Gets работают нормально.

Может кто-нибудь указать мне правильное направление?

Спасибо и всего наилучшего!

1 Ответ

1 голос
/ 25 марта 2020

400 Bad request очень вероятно, ошибка "тело отсутствует". Удалите @RequestBody Recipe deletedRecipe из параметров метода, поскольку вы не предоставляете объект для удаления, достаточно id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...