[JAVA 개인 프로젝트-0]4. dto & controller 만들기

준우·2025년 4월 28일
post-thumbnail

dto 폴더 생성

src/main/java > com.hosikvote 우클릭하여 new > Folder 선택

dto라는 이름으로 폴더 생성


PollRequestDto.java 파일 만들기

생성한 dto 폴더 우클릭하여 new > File 선택

PollRequestDto.java 라는 이름으로 파일 만들기

다음과 같이 코드 작성

package com.hosikvote.dto;

import java.time.LocalDateTime;

public class PollRequestDto{
	private String title;
	private String description;
	private LocalDateTime deadline;
	
	public String getTitle() {
		return title;
	}
	
	public void setTitle(String title) {
		this.title = title;
	}
	
	public String getDescription() {
		return description;
	}
	
	public void setDescription(String Description) {
		this.description = description;
	}
	
	public LocalDateTime getDeadline() {
		return deadline;
	}
	
	public void setDeadline(LocalDateTime deadline) {
		this.deadline = deadline;
	}
	
}
									


PollController.java 파일 만들기

이전에 만든 controller 폴더에 PollController.java 라는 이름으로 파일 생성
업로드중..

다음과 같이 코드 작성

package com.hosikvote.controller;

import com.hosikvote.dto.PollRequestDto; // 만들어놓은 PollRequestDto 참조
import org.springframework.web.bind.annotation.*; 

@RestController //이 클래스는 REST API용 컨트롤러임을 선언
@RequestMapping("/polls") // 이 클래스는 REST API용 컨트롤러임을 선언. 즉, 이 클래스 안의 메서드는 /polls를 기본 경로로 갖는다.
public class PollController{
	
	@PostMapping // HTTP 메서드 POST 요청을 처리하는 어노테이션.
	public String createPoll(@RequestBody PollRequestDto pollRequestDto) {
		System.out.println("=== Poll 요청 들어옴 ===");
		System.out.println("제목: " + pollRequestDto.getTitle());
		System.out.println("설명: " + pollRequestDto.getDescription());
		System.out.println("마감일: " + pollRequestDto.getDeadline());
		System.out.println("===========================");
		return "Poll created: " + pollRequestDto.getTitle();
	}
	
}


DTO : Data Transfer Object (데이터 전송 객체)

API 요청/응답 시에 필요한 데이터만 깔끔하게 담아서 주고받기 위해 만든 클래스.
여기선 title, description, deadline을 PollRequest라는 하나의 객체로 묶음.

Controller : 사용자의 요청을 받아서 처리하기 위해 만든 클래스

클라이언트가 요청(request)을 보내면 적절한 로직을 호출하고 결과(response)를 반환

  • Dto와 Controller를 나눠서 작성하는 이유
  1. 역할분배
    HosikvoteApplication.java = 프로그램을 실행하는 메인 클래스
    PollRequestDto.java = 요청 데이터만 정의하는 클래스
    PollController.java = 클라이언트 요청을 받아 처리하는 역할

  2. 재사용을 높이기 위해
    PollRequestDto 같은 DTO는 다른 API에서도 재사용할 수 있다.

profile
꾸준히

0개의 댓글