개발새발/Spring

220205_스프링입문_웹 개발 개론_REST API_패스트캠퍼스 챌린지 13일차

막동이아빠 2022. 2. 5. 23:02

220205_스프링입문_웹 개발 개론_REST_API_패스트캠퍼스 챌린지 13일차

<2022년 02월 05일 _ 패스트캠퍼스 챌린지 13일차>

[스프링입문_웹 개발 개론_REST API]

 

1. REST - 네트워크 아키텍처

 :  Representational State Transfer : 자원의 상태 전달

 

 (1) Client, Server

   : 클라이언트와 서버가 서로 독립적으로 분리 되어 있어야 함

 

 (2) Stateless

   : 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않음

 

 (3) Cache

   : 클라이언트는 서버의 응답을 Cache(임시저장) 할 수 있어야 함

   : 클라이언트가 Cache를 통해 응답을 재사용 가능해야 하고, 이를 통해 서버의 부하를 낮춤

 

 (4) 계층화Layered System

   : 서버와 클라이언트 사이에, 방화벽, 게이트웨이, Proxy등 다양한 계층 형태로 구성이 가능해야 함

   : 상기 내용에 대해 확장 또한 가능해야 함

 

 (5) 인터페이스 일관성

   : 인터페이스의 일관성을 지켜야함

   : 아키텍처를 단순화 시켜 작은 단위로 분리해야 함

   : 클라이언트, 서버가 독립적으로 개선 될 수 있어야 함

 

 (6) Code on Demand (Optional)

   : 자바애플릿, 자바스크립트, 플래시 등 특정한 기능을 서버로부터 클라이언트가 전달받아 코드를 실행 할 수 있어야함

 

2. 인터페이스의 일관성이 지켜짐 = REST를 잘 사용했는가의 판단의 척도

 (1) 자원의 식별

   : 웹 기반의 REST에서는 리소스 접근을 할 때 URI를 사용한다

   : http://foo.co.kr/user/100   Resource: user,식별자: 100

 

 (2) 메시지를 통한 리소스 조작

   : Web에서는 다양한 방식으로 데이터를 전달 가능

     ex) HTML, XML, JSON, TEXT 등

   : 어떤 타입의 데이터인지를 알려주기 위해 Http Header에 content-type으로 데이터의 타입을 지정함

   : 리소스 조작을 위해 데이터 전체를 전달 하지 않고, 메시지로 전달(client와 server가 독립적으로 확장 가능)

     ex) 서버의 user의 전화번호를 number로 초기 설정시, 정보를 Client와 주고 받을때, 그대로 사용한다면, 추후 서버 resource 변경으로 phone-number로 바뀐다면, Client는 처리를 못하고 에러가 발생함, 따라서 메시지로 전달

 

 (3) 자기 서술적 메시지

   : 요청하는 데이터가 어떻게 처리 되어져야 하는지, 충분한 데이터를 포함 할 수 있어야 함

   : Http 기반의 REST에서는 Http Method와 Header정보, 그리고 URI의 포함되는 정보로 표현 가능함

     - GET:     https://foo.co.kr/user/100, 사용자 정보 요청

     - POST:   https://foo.co.kr/user      , 사용자 정보 생성

     - PUT:     https://foo.co.kr/user      , 사용자 정보 생성 및 수정

     - DELETE: https://foo.co.kr/user/100, 사용자 정보 삭제 

   : 그 외, 담지 못한 정보들은 URI의 메시지를 통해 표현

 

 (4) 애플리케이션 상태에 대한 엔진으로써 하이퍼미디어

      (불필요 정보까지 넘어갈 수 있어서 현업에선 잘 쓰이지 않음)

   : REST API를 개발할 때, 단순한 Client요청 데이터만 응답해 주는 것이 아님

   : 데이터뿐 아니라 관련 리소스에 대한 Link 정보까지 같이 포함되어야 함

   : 위와 같은 조건들이 잘 갖춰지면 REST Ful 하다고 표현함

   : 이를 REST API 라고 부른다

 

13일차 강의 완료~

필기 & 내 화면 스크린샷 저장

 

 

 

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.