Pyun's

1. REST

1.1 REST (Representational State Transfer, 표현 상태 정의)

가. 정의

REST는 네트워크 구조원리의 모음, 리소스를 정의하고 자원에 대한 주소를 지정하는 방법에 대한 조건. , 도메인 지향 데이터를 HTTP 위에서 부가적인 전송 레이어 없이 전송하기 위한 간단한 구조를 정의한 것.

나. REST의 제약조건 (모든 조건을 만족하는 것을 'RESTful'하다고 함.)

1) 클라이언트/서버(Client/Server) : 웹의 일관된 인터페이스를 따른 다는 전제하에 클라이언트와 서버는 독립적으로 구현되어야함.

2) 균일한 인터페이스 (Uniform Interface): 자원 식별, 표현을 통한 자원처리, 자기 서술적 메시지, HATEOAS 같은 인터페이스 제약에 따라 서로 일관성 있게 상호 운영되어야한다.

3) 계층시스템(Layered System) : 웹의 일관된 인터페이스를 사용해서 프락시 또는 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있어야 한다.

4) 캐시 처리(Cacheable) : 웹 서버가 응답 데이터마다 캐시 여부를 선언 할 수 있어야 한다.

5) 무상태(Stateless) : 웹 서버가 클라이언트의 상태를 관리할 필요가 없어야 한다.

6) 주문형 코드(Code-on-demand) : 선택 사항으로 스크립트나 플러그인 같은 실행 가능한 프로그램을 클라이언트에 전송하여 클라이언트가 실행할 수 있도록 해야 한다.



1.2 REST API

가. 정의

1)웹 서비스는 네트워크상에서 서로 다른 시스템간의 상호 작용을 위한기술.

2)주고받는 데이터 형식에 대한 표준을 정의함으로써 플랫폼과 프로그램 언어와는 독립된 방법으로 서로 연동 가능.

3)클라이언트가 웹 서버에서 제공하는 API이용하여 데이터와 기능을 제공 받을 수 있다.

*API(Application Programming Interface): 운영체제와 응용프로그램 사이의 통신에 사용되는 언어나 메시지 형식을 말한다.

4) 기존에는 SOAP(Simple Object Access Protocol)을 기반으로 웹서비스를 구현 했으나 처리 오버헤드 및 복잡성 때문에 요즘은 REST구조 스타일을 주로 사용.



1.3 REST에서의 Resource

가. 정의

1) REST API는 URI경로를 사용해서 자원을 나타내고 포인트 슬래시(/)로 경로 구문을 나눈다. 이 경로 구문은 자원 계층에서 유일한 자원을 나타낸다.

2) REST API에서는 CRUD 기능을 수핼 할 때는 URI(Uniform Resource Identifier)에 나타내지 않는다. 즉 URI는 자원을 식별 할때만 사용하고, CRUD 기능을 수행 할 때에는 HTTP Request Method를 사용한다.

 HTTP Method 

 의미 

 CRUD 

 예제 

 POST

 새로운 자원을 생성한다. 

 Create 

 POST /books 

 GET 

 자원을 조사한다.

 Read

 GET /books/1 

 PUT 

 기존에 존재하는 자원을 변경한다.

 Update

 PUT /books/1 

 DELETE 

 기존에 존재하는 자원을 삭제한다.

 Delete

 DELET /books/1 



1.4 Spring Web MVC

가. Modal 1 Pattern VS Modal 2 Pattern

1) Pattern : 수많은 시행착오를 통해서 좀더 효율적인 방법들을 체계화시키고 정리한 것.

■Model 1 

  1) 예전에 많이 사용하던 개발방식, 사용자에 요청을 서블릿이나 JSP가 받아서 필요한 자바빈을 효출후 결과값을 출력.

  2) 개발 속도가 빠르고 쉽다는 장점이 잇으나 로직이 섞여 있어서 디자인 영역과에 구분이 어려워지고 코드가 복잡해지는 단점이 있다.

■Model 2

  1) MVC 패턴을 이용함. MVC 패턴이란 Model,  View, Controller 세 영역으로 나누어지는 구조로 된 어플리케이션이다.

  2) 서로에 대한 역할이 명확하기 때문에 각가의 영역에 대한 독립성을 보장한다.

   Model 영역      : 어플리케이션에서 사용되는 데이터를 다루고너 비즈니스 로직을 다루는 영역.

   View 영역        : View영역을 통해서 사용자가 보는 웹페이지를 생성하는 영역. 

   Controller 영역 : Model 영역과 View영역 간의 흐름을 제어하는 역할. 클라이언트의 요청을 받아 이를 처리하기 위한 Model 영역을 호출하고 그결과를 View                            에게 전달.

   * MVC 패턴은 각각에 역할이 명확하게 나누어져 있기 때문에 오직 각 부분에서 담당하는 기능만 구현하면 된다.

나.  Spring Web MVC

      1) Spring에서 제공해주는 MVC 프레임워크

      2) Spring에 기능을 그대로 사용하면서 MVC 패턴에 기반을 둔 웹어플리케이션 개발 방법.


--임시 http://maven.apache.org/download.cgi 메이븐 저장