+ 00 00 0000

Have any Questions?

03_Simple Coding – Backend – RestController CRUD – 기본 요약

03_Simple Coding – Backend – RestController CRUD – 기본 요약

📃 요약

실무에서는 MVC 디자인 패턴 속해서 스프링부트를 사용해 코딩을 진행함. 파일관리 시 파일을 용도에 맞게 정리하듯이 MVC 디자인 패턴도 패키지 및 클래스를 용도에 맞게 분류해서 코딩을 진행함

요소 기술 :

– Basic : java & spring boot

📃 기술 구현

스펙 :

- intellij
- java
- spring boot

📃 @RestController :

- View 가 react, vue 일때 사용되는 컨트롤러
- 함수 위에 요청받은 특정 url 이 있음
- return 값이 json 데이터임

@Slf4j :

- 로깅 라이브러리 (롬북) , 인터페이스 : 자식클래스(logback)
- 설치 : Logback 프러퍼티 파일2개 복사, build.gradle 라이브러리 4개 추가
사용법 :
    1) @Slf4j 클래스 위에 달고
    2) 로깅 하고 싶은 라인에서 log.debug(값.toString());

@Service :

- 클래스 위에 달고, 달린 클래스는 서버가 가동될때 자동으로 객체 생성됨(IOC)
- 유사 어노테이션 : @Repository, @Component, @Bean 등

@Autowired :

- 위에서 생성된 객체를 가져오기 할때 사용(DI)

CRUD 어노테이션

- 생성/조회/수정/삭제 요청에 대해 각각의 어노테이션이 존재함
- @PostMapping(/url) : Post 방식으로 오는 요청에(insert 요청) 대해 실행
- @GetMapping(/url) : Get 방식으로 오는 요청에(조회요청) 대해 실행되는 어노테이션
- @PutMapping(/url) : Put 방식으로 오는 요청에(update 요청) 대해 실행
- @DeleteMapping(/url) : Delete 방식으로 오는 요청에(delete 요청) 대해 실행

1) C : Insert 요청 어노테이션

사용법 :
    @PostMapping(/url)
    public ResponseEntity<Object> 함수명(@RequestBody Dept dept){
        try {
            실행문;
            return new ResponseEntity<>(변수, 신호);

        } catch(Exception e) {
            실행문;
            return new ResponseEntity<>(신호);
        }

    }

예 :
    @PostMapping("/dept")
    public ResponseEntity<Object> createDept(
            @RequestBody Dept dept) {
        try {
            List<Dept> list = deptService.save(dept);
            return new ResponseEntity<>(list, HttpStatus.CREATED);
        } catch (Exception e) {
            log.debug(e.getMessage());
//          todo: INTERNAL_SERVER_ERROR(500) : sql 구문 에러 등
            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }

2) R : Select 요청 어노테이션

사용법 :
    @GetMapping(/url)
    public ResponseEntity<Object> 함수명(){
        try {
            실행문;
            return new ResponseEntity<>(변수, 신호);

        } catch(Exception e) {
            실행문;
            return new ResponseEntity<>(신호);
        }

    }

예 :
    @GetMapping("/dept")
    public ResponseEntity<Object> getDeptAll() {
        try {
            List<Dept> list = deptService.findAll();
            if(list.isEmpty() == false) {
//              todo: 조회 성공
                return new ResponseEntity<>(list, HttpStatus.OK);
            } else {
//              todo: 데이터 없음
                return new ResponseEntity<>(HttpStatus.NO_CONTENT);
            }
        } catch (Exception e) {
            log.debug(e.getMessage());
//          todo: INTERNAL_SERVER_ERROR(500)
            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }

3) U : Update 요청 어노테이션

사용법 :
    @PutMapping(/url)
    public ResponseEntity<Object> 함수명(
        @PathVariable int dno,
        @RequestBody Dept dept
    ){
        try {
            실행문;
            return new ResponseEntity<>(변수, 신호);

        } catch(Exception e) {
            실행문;
            return new ResponseEntity<>(신호);
        }

    }

예 :
    @PutMapping("/dept/edit/{dno}")
    public ResponseEntity<Object> updateDept(
            @PathVariable int dno,
            @RequestBody Dept dept
    ){
        try {
            List<Dept> list = deptService.save(dept);
            return new ResponseEntity<>(list, HttpStatus.CREATED);
        } catch (Exception e) {
            log.debug(e.getMessage());
            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }

4) D : Delete 요청 어노테이션

사용법 :
    @DeleteMapping(/url)
    public ResponseEntity<Object> 함수명(
        @PathVariable int dno
    ){
        try {
            실행문;
            return new ResponseEntity<>(변수, 신호);

        } catch(Exception e) {
            실행문;
            return new ResponseEntity<>(신호);
        }

    }

예 :
    @DeleteMapping("/dept/delete/{dno}")
    public ResponseEntity<Object> deleteDept(
            @PathVariable int dno
    ) {
        try {
            boolean bSuccess = deptService.removeById(dno);
            if(bSuccess == true) {
//              todo: 삭제 성공
                return new ResponseEntity<>(HttpStatus.OK);
            } else {
//              todo: 0건 삭제 없음
                return new ResponseEntity<>(HttpStatus.NO_CONTENT);
            }
        } catch (Exception e) {
            log.debug(e.getMessage());
//          todo: INTERNAL_SERVER_ERROR(500)
            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다