spring - REST 풀 (employee 부서별 사원들 조), Spring4 버전, @RestController, @GetMapping(Get, Post, Delete, Put), @RequestBody와 @ResponseBody

2019. 7. 9. 19:09Spring

=========================REST 풀============================

REST
        - RepresentationalState Transfer
        - 자원의 현재 상태(정보)를 주고 받는 작업을 말한다.
        - 클라이언트와 서버가 데이터를 주고 받는 통신방법이다.
          * HTTP 프로토콜을 활용해서 클라이언트와 서버가 데이터(자원의 현재 상태)를 
             서로 교환하는 통신방법
        - REST의 구체적 개념
                - URI을 사용해서 어떤 다원(정보)인지를 명시합니다.
                - HTTP 메소드(POST, GET, PUT, DELETE)를 사용해서 해당 자원(정보)에 
                  처리방법(CRUD)을 명시한다.
               
              예) 
                   HTTP 메소드      요청 URI               요청데이터   응답데이터
                   ----------------------------------------------------------------------
                   GET              localhost/users/        없음        있음
                   DELETE           localhost/users/1       없음        있음
                   POST             localhost/users/        있음        있음
                   PUT              localhost/users/1       있음        있음

        - 등장배결 
                - 다양한 클라이언트 플랫폼의 등장
                - 서버프로그램이 다양한 브라우져, 다양한 모바일 디바이스와 통신할 필요가 발행        
          
        - 장점
                - 다양한 클랫폼에서 사용이 가능하다.
                - 클라이언트측 디자인에서 발생할 수 있는 문제가 최소화된다.
                - 클라이언트와 서버의 역할이 명확해야한다.
                  * 서버 : 데이터(정보) 처리
                  * 클라이언트 : 데이터 표현
                  
        - 단점
                - 명확한 표준이 존재하지 않는다.
                - 구형 브라우저에서 POST, PUT등을 지원하지 않을 수 있다.


REST API
        - API(Application Programming Interface)
                - 컴퓨터 프로그램간의 상호작용/정보교환을 가능하도록 하는 
        - REST API
                - REST를 기반으로 서비스 API를 구현한 것
                - 대표적인 예가 Open API(날씨정보, 구글맵, 공공데이터 등), 마이크로 서비스 등이 해당된다.
                  * 서비스 제공업체등른 REST API 방식으로 데이터를 제공한다.

 

        부서정보 조회 서비스
                요청 URI : localhost/rest/depts
                요청방식 : GET
                요청데이터 : 없음
                응답데이터 : JSON


        부서별 사원 목록 조회 서비스
                요청 URI : localhost/rest/emps/부서아이디
                요청방식 : GET
                요청데이터 : 없음
                응답데이터 : JSON

 

        - 느낌:
                $.ajax({
                type:"GET",
                url:"emps/"+deptId,
                dataType:"json",
                success:function(employees){
        



RESTful
        - REST 아키덱처를 구현하는 웹 애플리케이션 프로그램을 말한다.
        - RESTful은 "REST스럽다."
           * "REST스럽다"는 REST 원리를 잘 반영해서 개발된 시스템을 말한다.



==========================spring4의 추가 기능
         
Spring4
        - XML을 개싱하는 JavaConfig가 지원된다.
        - RESTful 개발을 지원하는 @RestController가 추가된다.
        - 컨드롤러의 공통기능을 지원하는 @ControllerAdvice가 추가된다.
        - WebSocket을 지원한다.
        - 자바8을 지원한다.
=============================================

 


====================일반 컨트롤러와 Rest 컨트롤러 차이

 

스프링의 REST 지원

        - spring4 버전부터 @RestControler 어노테이션이 추가

          * REST 요청을 처리하는 컨트롤러를 작성할 때 사용된다.

 

---작성 예시---


인반 컨트롤러

        @Controller
        public class EmployeeController {
        
                @RequestMapping("/employees")
                @ResponseBody
                public List employees() {

                }
        }



Rest 컨트롤러

        @RestController
        public class EmployeeController {
        
                @RequestMapping("/employees")
                // @ResponseBody를 생략해도 된다.
                public List employees() {

                }
        }         

 

        - HTTP요청에방식에 따른 @RequestMapping와 동일항 어노테이션을 @GetMapping

          , @postMapping, @DeleteMapping, @PutMapping 제공한다.

        - 작성예

                @GetMapping("/depts")
                @RequestMapping(value="/depts" method=RequestMethos.GET) 과 같다.

 

예시)

서버측의 자바객체의 JSON 텍스트 간의 변환

public @ResponseBody List<Employee> addEmployee(@RequestBody Employee employee) {

 

}

        @RequestBody Employee employee

                - JSON Text --> 자바 객체

                - 클라이언트가 서버에게 전달한 요청메세지의 본문(JSON 형식의 텍스트)을 

                  MappingJacksonDataBinder가 분석해서 Employee객체에 대입한다.

 

        @ResponseBody List<Employee>

                - 자바 객체 --> JSON Text

                - 요청핸들러 메소드가 반환하는 객체를

                  MappingJacksonDataBinder가 JSON으로 반환해서 응답으로 제공한다.

 

클라이언트측의 자바스크립트객체와 JSON 텍스트 간의 변환

 

        JSON.parse()

                - JSON Text ---> 자바스크립트객체

                - var obj = JSON.parse(jsonText);

 

        JSON.stringify()

                - 자바스크립트객체 ---> JSON Text

                - var jsontext = JSON.stringify(obj)
===============================================================



==========================================================

부서별 사원들 조회하기



1. pom.xml 을 portal껄 복붙 spring만 4로 바꿈



2. vo, dao, controller 패키지 생성

 

 


3. vo, dao 생성

     1) DepartmentVo

     2) EmployeeVo

 

     3) EmployeeDao (우선은 Service없이 만들었다.)

 

 


4. controller 생성
     1) EmployeeController

     2) HrController

 

 

 


5. root-context에 DB연결

 

 


6. views에 hr.jsp생성



10. hr 스크립트 작성

 

 

11. 실행화면