[Spring] Spring MVC에서 REST 방식의 Controller 작성

HyeJin Jeon·2020년 5월 19일
0

Spring

목록 보기
1/2
post-custom-banner

Annotations

RestController 작성에 사용되는 특별한 annotation은 다음과 같다.

  1. @RestController :
    RestController 선언
  2. @PathVariable :
    URI의 경로에서 원하는 데이터를 추출하는 용도로 사용
  3. @RequestBody :
    전송된 JSON 데이터를 객체로 변환해주는 annotation, @ModelAttribute와 유사하나 JSON에서 사용한다는 점에서 차이가 있다.

CRUD 예시

@RestController
@RequestMapping("/boards")
public class BoardController {

    @Inject
    private BoardService service;
    
    /**** CREATE ****/
    @RequestMapping(value="", method=RequestMethod.POST)
    public ResponseEntity<String> register(@RequestBody BoardVO vo) {
    	ResponseEntity<String> entity = null;
        try {
            service.addBoard(vo);
            entity = new ResponseEntity<String>("SUCCESS", HttpStatus.OK);
        } catch (Exception e) {
            e.printStackTrace();
            entity = new ResponseEntity<String>(e.getMessage(), HttpStatus.BAD_REQUEST);
        }
        return entity;
    }
    
    
    /**** READ ****/
    @RequestMapping(value="/all", method=RequestMethod.GET)
    public ResponseEntityList<List<BoardVO>> list() {
    	
        ResponseEntity<List<BoardVO>> entity = null;
        try {
            entity = new ResponseEntity<>(
                service.listBoard(), HttpStatus.OK);
            
        } catch (Exception e) {
            e.printStackTrace();
            entity = new ResponseEntity<>(HttpStatus.BAT_REQUEST);
        }
        
        return entity;
    }
    
    /**** UPDATE ****/
    @RequestMapping(value="/{bno}", method={RequestMethod.PUT, RequestMethod.PATCH})
    public ResponseEntity<String> update(
    	@PathVariable("bno") Integer bno,
        @RequestBody BoardVO vo) {
        
    	ResponseEntity<String> entity = null;
        try {
            vo.setBno(bno);
            service.modifyBoard(vo);
            
            entity = new ResponseEntity<String>("SUCCESS", HttpStatus.OK);
        } catch (Exception e) {
            e.printStackTrace();
            entity = new ResponseEntity<String>(e.getMessage(), HttpStatus.BAD_REQUEST);
        }
        
        return entity;
    }
    
    
    /**** DELETE ****/
    @RequestMapping(value="/{bno}", method=ReqeustMethod.DELETE) 
    public ResponseEntity<String> remove(
    	@PathVariable("bno") Integer bno) {
        
        ResponseEntity<String> entity = null;
        try {
            service.removeBoard(bno);
            entity = new ResponseEntity<String>("SUCCESS", HttpStatus.OK);
            
        } catch (Exception e) {
            e.printStackTrace();
            entity = new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST);
        }
        
        return entity;
    }
}

출처: 코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단

profile
Backend Developer
post-custom-banner

0개의 댓글