Spring(기초)-3주차-3-Controller

Jonguk Kim·2021년 11월 16일
0

Spring

목록 보기
6/16

1. Controller 만들기

MemoController 클래스 만들기

  1. controller 패키지 생성 (com.review.review03 -> controller)
  2. MemoController 클래스 생성 (service -> MemoController.java)
    1) @RequiredArgsConstructor: 반드시 필요한 생성자가 있으면 스프링에서 알아서 생성하도록 권한을 주는 것 (반드시 필요한 것에 final을 붙임)
    2) @RestController: REST 방식 처리 (순수 데이터, JSON) (자동응답기)
  3. 조회/생성/삭제: Repository
    수정: Service
  4. MemoRepository memoRepository
    MemoService memoService
  5. private final MemoRepository memoRepository
    private final MemoService memoService
  6. @RequiredArgsConstructor: final 붙인거 알아서 생성해줌
  7. @RestController: 생성 별도 할 필요없이 스프링이 해줌
package com.review.review03.controller;

import com.review.review03.domain.MemoRepository;
import com.review.review03.service.MemoService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RestController;

@RequiredArgsConstructor
@RestController
public class MemoController {

    private final MemoRepository memoRepository;    // 조회, 생성, 삭제
    private final MemoService memoService;          // 수정
}
  1. createMemo 메소드 생성
    1) MemoRequestDto requestDto: 생성할 데이터 받아야함
    2) @PostMapping("/api/memos"): POST 방식으로 요청
    3) Memo 클래스 생성: requestDto로 생성
    4) return memoRepository.save(memo): 생성한 memo를 Repository에 생성
  2. getMemos 메소드 생성
    1) return memoRepository.findAllByOrderByModifiedAtDesc(): 최신순으로 정렬해서 리스트 조회
    2) @GetMapping("/api/memos")
  3. deleteMemo 메소드 생성
    1) memoRepository.deleteById(id);
    2) @PathVariable Long id: 경로에 있는 변수 사용, id가 누군지 찾기 위해 매개변수에 넣음
    3) @DeleteMapping("/api/memos/{id}")
    4) return id
package com.bellpro.memo.controller;

import com.bellpro.memo.domain.Memo;
import com.bellpro.memo.domain.MemoRepository;
import com.bellpro.memo.domain.MemoRequestDto;
import com.bellpro.memo.service.MemoService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.lang.management.LockInfo;
import java.util.List;

@RequiredArgsConstructor    // 반드시 필요한 생성자가 있으면 스프링에서 알아서 생성하도록 권한을 주는 것 (반드시 필요한 것에 final을 붙임
@RestController // JSON 데이터를 주고 받는 자동 응답기
public class MemoController {

    private final MemoRepository memoRepository;    // 생성, 조회, 삭제
    private final MemoService memoService;  // 수정

    // 생성
    @PostMapping("/api/memos")
    public Memo createMemo(@RequestBody MemoRequestDto requestDto){ // 생성할 데이터 받아야함
        Memo memo = new Memo(requestDto);
        return memoRepository.save(memo);
    }

    // 조회
    @GetMapping("/api/memos")
    public List<Memo> getmemos(){
        return memoRepository.findAllByOrderByModifiedAtDesc(); // 최신순으로 정렬해서 리스트 조회
    }

    // 수정
    @PutMapping("/api/memos/{id}")
    public Long updateMemo(@PathVariable Long id, @RequestBody MemoRequestDto requestDto){ // 수정할 데이터 받아야함
        memoService.update(id, requestDto);
        return id;
    }

    // 삭제
    @DeleteMapping("api/memos/{id}")
    public Long deleteMemo(@PathVariable Long id){  // 경로에 있는 변수 사용
        memoRepository.deleteById(id);
        return id;
    }

}

profile
개발일지

0개의 댓글