This lesson focuses on adding a new GET endpoint to a Spring Boot application that returns multiple CashCard objects. It follows the Test-Driven Development (TDD) approach by first writing a failing test, understanding why it fails, implementing the necessary controller method, and then verifying that the test passes.
Key Points:
shouldReturnAllCashCardsWhenListIsRequested
is added to CashCardApplicationTests.java
./cashcards
endpoint using restTemplate
.200 OK
./cashcards
has not been implemented yet.404 NOT FOUND
error since no route matches the GET request.405 METHOD_NOT_ALLOWED
error.405 METHOD_NOT_ALLOWED
error indicates that the endpoint exists but does not support the GET HTTP method./cashcards
endpoint was previously implemented with a @PostMapping
for creating CashCard objects.To fix the error, a new controller method is added with the @GetMapping
annotation:
@GetMapping()
private ResponseEntity<Iterable<CashCard>> findAll() {
return ResponseEntity.ok(cashCardRepository.findAll());
}
This method uses cashCardRepository.findAll()
to retrieve all CashCard records from the database.
It leverages Spring Data's built-in CrudRepository.findAll()
method.
Conclusion:
추가 GET 엔드포인트에 대한 테스트 작성
이 강의는 여러 개의 CashCard 객체를 반환하는 새로운 GET 엔드포인트를 Spring Boot 애플리케이션에 추가하는 방법에 초점을 맞추고 있습니다. 실패하는 테스트를 먼저 작성하고, 왜 실패하는지 이해한 후, 필요한 컨트롤러 메소드를 구현하고, 테스트가 통과하는 것을 확인하는 테스트 주도 개발(TDD) 방식을 따릅니다.
주요 내용:
CashCardApplicationTests.java
에 새로운 테스트 메소드 shouldReturnAllCashCardsWhenListIsRequested
를 추가합니다.restTemplate
을 사용하여 /cashcards
엔드포인트에 GET 요청을 보냅니다.200 OK
인지 확인합니다.404 NOT FOUND
오류를 예상할 수 있습니다.405 METHOD_NOT_ALLOWED
오류로 실패합니다.405 METHOD_NOT_ALLOWED
오류는 엔드포인트가 존재하지만 GET HTTP 메소드를 지원하지 않음을 나타냅니다./cashcards
엔드포인트는 CashCard 객체를 생성하기 위한 @PostMapping
으로 구현되었습니다.오류를 수정하기 위해 @GetMapping
애노테이션을 사용하여 새로운 컨트롤러 메소드를 추가합니다:
@GetMapping()
private ResponseEntity<Iterable<CashCard>> findAll() {
return ResponseEntity.ok(cashCardRepository.findAll());
}
이 메소드는 cashCardRepository.findAll()
을 사용하여 데이터베이스의 모든 CashCard 레코드를 가져옵니다.
Spring Data의 내장 메소드인 CrudRepository.findAll()
을 활용합니다.