[To do List] 컨트롤러 구현

oh_eol·2024년 1월 23일
0

To-do-List

목록 보기
5/5
post-thumbnail

컨트롤러 구현

TodoController

package todolist.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import todolist.dto.TodoRequest;
import todolist.dto.TodoResponse;
import todolist.service.TodoService;

@RestController
@RequestMapping("/api/todo")
@RequiredArgsConstructor
public class TodoController {
    private final TodoService todoService;

    // 생성
    @PostMapping
    public ResponseEntity<?> create(@RequestBody TodoRequest request) {
        System.out.println("CREATE");
        TodoResponse response = todoService.create(request);

        return ResponseEntity.status(HttpStatus.CREATED).body(response);
    }

    // 수정
    @PatchMapping("/{id}")
    public ResponseEntity<?> update(
            @PathVariable Long id,
            @RequestBody TodoRequest request
    ) {
        System.out.println("UPDATE");
        TodoResponse response = todoService.update(id, request);

        return ResponseEntity.ok(response);
    }

    // 삭제
    @DeleteMapping("/{id}")
    public ResponseEntity<?> delete(@PathVariable Long id) {
        System.out.println("DELETE");
        todoService.delete(id);

        return ResponseEntity
                .status(HttpStatus.NO_CONTENT)
                .build();
    }

    // 조회
    @GetMapping("/{id}")
    public ResponseEntity<?> get(@PathVariable Long id) {
        System.out.println("READ ONE");
        TodoResponse response = todoService.get(id);

        return ResponseEntity.ok(response);
    }

    // 전체 조회
    @GetMapping
    public ResponseEntity<?> getAll(@PageableDefault(size = 10) Pageable pageable) {
        System.out.println("READ ALL");
        Page<TodoResponse> responses = todoService.getAll(pageable);

        return ResponseEntity.ok(responses);
    }
}

톰캣 서버 실행

다음과 같이 TodoListApplication 의 main 메서드를 작성한다.

TodoListApplication

package todolist;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class TodoListApplication {
	public static void main(String[] args) {
		SpringApplication.run(TodoListApplication.class, args);
	}

}

처음에는 아래와 같이 서버 실행에 실패했다.

build.gradle 파일에서 다음과 같이 h2 데이터베이스를 추가하고 다시 실행하니 성공!

	runtimeOnly 'com.h2database:h2'
//	runtimeOnly 'mysql:mysql-connector-java'


Postman(API 테스트)

추후 작성

profile
공부 중입니다.

0개의 댓글