본문 바로가기

SpringBoot/스파르타 웹개발의 봄 spring

[스파르타 웹개발의 봄 spring] 03.05 controller 만들기

728x90
반응형

## MemoController API 구현

- -메모 생성,조회,업데이트,삭제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package com.sparta_spring.sparta_spring_week03.controller;
 
import com.sparta_spring.sparta_spring_week03.domain.Memo;
import com.sparta_spring.sparta_spring_week03.domain.MemoRepository;
import com.sparta_spring.sparta_spring_week03.domain.MemoRequestDto;
import com.sparta_spring.sparta_spring_week03.service.MemoService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
 
import java.util.List;
 
@RestController // json 컨트롤러
@RequiredArgsConstructor // 의존주입 생성자 자동완성
public class MemoController {
    // 필요한 멤버변수
    private final MemoRepository memoRepository;
    private final MemoService memoService;
 
    // API 작성
    // POST
    @PostMapping("/api/memos")
    public Memo createMemo(@RequestBody MemoRequestDto memoRequestDto){//@RequestBody: RequestBody에에 있는 것을 넣어줘 요청
        Memo memo = new Memo(memoRequestDto); // 리파지토리 메서드에는 Memo 클래스를 넣어야 함
       return memoRepository.save(memo);
    }
 
    //GET
    @GetMapping("/api/memos")
    public List<Memo> getMemos(){
        return memoRepository.findAllByOrderByModifiedAtDesc(); // 수정된 시간 순으로 모두 조회
    }
 
    //UPDATE
    @PutMapping("/api/memos/{id}")
    public Long updateMemo(@PathVariable Long id,@RequestBody MemoRequestDto memoRequestDto) {
        return memoService.update(id, memoRequestDto); // 서비스의 업데이트 메서드 이용   }
    }
 
    //DELETE
    @DeleteMapping("/api/memos/{id}")
    public Long deleteMemo(@PathVariable Long id){
        memoRepository.deleteById(id); // 리파지토리에서 삭제 // 리파지토리는 예외처리 자동해줌
        return id;
    }
}
 
cs
반응형