코딩공작소

REST Api 컨트롤러 개발 본문

어플리케이션개발/토이프로젝트(취미)

REST Api 컨트롤러 개발

안잡아모찌 2024. 10. 31. 22:09
package toyPJT.toypjt_v100.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import toyPJT.toypjt_v100.domain.Todo;
import toyPJT.toypjt_v100.domain.dto.todoDto;
import toyPJT.toypjt_v100.service.TodoService;

import java.util.HashMap;
import java.util.List;
import java.util.Map;


@RestController
@RequiredArgsConstructor
public class Apicontroller {

    private final TodoService todoService;

    @GetMapping("/todo/selectAll")
    public ResponseEntity<List<Todo>>  findTodos(){
        return ResponseEntity.ok().body(todoService.findTodos());
    }

    @PostMapping("/todo/addTodo")
    public ResponseEntity<Todo> addTodo(todoDto tododto){
        Todo todo = new Todo();
        todo.setContent(tododto.getContent());
        todo.setCompleteYn(tododto.getCompleteYn());
        todoService.saveTodo(todo);

        return ResponseEntity.ok()
                .body(todo);
    }

    @PutMapping("/todo/editTodo")
    public ResponseEntity<Map<String, Object>> editTodo(todoDto todoDto){
        try {
            todoService.updateTodo(todoDto.getTodoId(), todoDto.getCompleteYn(), todoDto.getContent());
        }catch (Exception ex){
            Map<String, Object> result = new HashMap<>();
            result.put("resultMessage", ex.getMessage());
            return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(result);
        }

        return ResponseEntity.ok().build();
    }

    @DeleteMapping("/todo/deleteTodo/{id}")
    public ResponseEntity<Todo> deleteTodo(@PathVariable long id){
        Todo todoServiceOne = todoService.findOne(id);
        todoService.deleteTodo(id);

        return ResponseEntity.ok().body(todoServiceOne);
    }
}

기본적으로 CRUD를 위한 API들을 개발했다.
ResponseEntity로 응답값을 전달하는 부분들에 대해 좀 더 자세히 알게되었다.

 

 

그리고 업데이트 시, 해당 데이터가 없으면 NullPointerException이 발생하는 부분이 있어 예외처리 부분도 추가해줬다.

 

 

추후로, Mock을 통해 테스트코드를 짜는 걸 한번 해보고싶은 마음이 있다.. 흠
그리고는 이제 JS단에서 해당 API들을 ajax로 호출해서 기능들을 연결해주는 개발들을 진행해볼까 한다.