SpringBoot 축구 팀 CRUD 초초초미니 프로젝트 - 축구팀 생성 구현

2024. 4. 22. 20:48스프링/축구 팀 CRUD

  • 자 이제 축구팀을 생성할 것인데 여기에는 클라이언트의 body에서 데이터 정보를 입력하면 그것을 받아줄 dto(그릇 이라고 생각하면 됨)를 만들고 dto를 엔티티에 저장 할 예정이다.
  • 실습 해보자
  • 생성은 POST 메서드로 받는다 엔드포인트는 /api/soccor-team 으로 해준다. 여기에 파라미터 값에 body를 받아주기 위해 @RequestBody 어노테이션과 dto인 SoccorteamDto를 이용한다.
@PostMapping("/api/soccer-team")
    public Team soccorTeam(@RequestBody SoccorteamDto dto){
        
    }
  • 서비스에게 데이터를 담은 dto를 넘겨주고, 서비스에게서 create 수행이 잘 되었는지 아닌지 반환을 받고 잘 생성이 되었는지 다시 삼항 연산자로 응답을 한다.
  • 근데 여기서 ResponseEntity는 REST API의 응답을 위해서 사용하는 클래스이다.
  • 이 클래스에는 HTTP 상태코드, 헤더, 본문 내용을 실어서 반환시킬 수 있다. 해당 클래스를 사용하기 위해 반환형을 ResponseEntity<Team> 으로 바꿔주고, ResponseEntity.status(HttpStatus.{상태코드}).body(보낼 내용) 형식으로 반환해주면 된다!
@PostMapping("/api/soccer-team")
    public ResponseEntity<Team> createSoccorTeam(@RequestBody SoccorteamDto dto){
        Team created = soccorteamService.createSoccorTeam(dto); // 서비스 넘겨주고
        // 잘 생성이 되었는지 삼항 연산자로 응답
        return (created != null) ? 
				        ResponseEntity.status(HttpStatus.OK).body(created) :
				        ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
    }
  • createSoccorTeam 메서드를 서비스 클래스에 만들어줘야한다. 받은 dto를 db에 저장하기 위해 엔티티로 변환해주고, 변환된 엔티티가 id가 없는 id였다면 새로운 데이터이므로 리포지토리에 저장을 해준다. 그리고 그 값을 반환 해준다.
public Team createSoccorTeam(SoccorteamDto dto) {
        // 1. 받은 dto 엔티티로 변환
        Team team = dto.toEntity();
        //2. 엔티티 받고 id가 없었으면 생성
        if(team.getId() != null)
            return null;
        return soccorteamRepository.save(team);
    }
  • 여기서 toEntity() 메서드가 만들어져있지 않은데 바로 SoccorteamDto로 넘어가서 해당 메서드를 만들어준다.
@AllArgsConstructor
public class SoccorteamDto {
   //{생략}

    public Team toEntity() {
        return new Team(id, teamname, league);
    }
}