<01> 웹 개발 개론
- 웹 이란
- www? 전세계에 연결된 인터넷 공간
- web의 용도? 웹사이트 / API (비공개도 있음) / UI
- 기본 3가지 요소
- URI - "Uniform Resource Identifier"
- HTTP
- HTML
<02> "REST"
주 업무: REST API 제공 / REST API 만들기 -> REST 규약을 지켜야
- REST
REpresentational State Transfer
논문이었던 걸로 기억하는데... 뭔 180페이지 짜리야... 박사학위 논문이라고 함. [PDF] - REST의 6가지 조건 (거의 위키백과 내용을 수정한 듯)
- Client / Server 구조 - 이 둘이 서로 독립, 서로 개별적으로 발전할 수 있게끔
(ㅋㅋ 영어 위키백과 그럼 크롬만 지원하는 사이트들은 RESTful 하지 않은건가? ㅋㅋ) - Stateless [참고] - 서버는 클라의 상태를 모름.
- 서로 다른 요청간에 서버가 클라이언트의 상태를 킵해놓고 이전 요청에서 보냈으니 현재 요청도 같을거라고 생각하면 안 됨.
- 예를 들어, 인증 정보를 클라가 토큰으로 킵해놓고 있다면 그걸 이전 요청에서 받았으니 이번 요청에는 안 보내도 된다던가 이러면 안 되고 클라가 매번 인증 정보를 실어서 보내야 함
- (REST가 서버의 자원을 리소스로 보는 관점이니까 당연한가...? Idempotency 도 여기서 유래하는 거 같고...)
- 서버에 있는 리소스의 상태하고는 별개임.
- Cache - 클라가 서버의 응답을 캐싱해놓고 재사용할 수 있어야 함
이래서 HEAD가 있는건가? HEAD는 HTTP니까 별개인가??- "서버쪽에도 캐시가 있다"
- 계층화(Layered System) - 클라가 어떤 서버에 연결되어 있는지 몰라야 그 사이에 { 방화벽, 게이트웨이, Proxy } 같은 걸 비집어넣어서 확장할 수 있음
(홈페이지 구성할 때 자주 쓰는 리버스 프록시라던가...) - 인터페이스 일관성(Uniform interface) - 리소스 관점에서 URI와 method 등의 인터페이스가 일관적으로 디자인되어 있어야 한다는 얘기 같은데 후술한다고 함 (젤 중요한 거기도 하고)
- Code on demand (optional) - JavaScript 등의 코드를 클라에 던져서 클라의 기능 확장
- Client / Server 구조 - 이 둘이 서로 독립, 서로 개별적으로 발전할 수 있게끔
- 인터페이스 일관성(Uniform interface) - 제일 중요하고, RESTful 인지 판단하는 가장 큰 요소인 듯
- 자원의 식별 (Resource identification in requests)
URI에 리소스의 식별자(ID) 가 들어있어야 함- foo.co.kr/users/100
- 리소스: users (선생님 왜 복수형이 아닌가요... 이 단계에서는 설명하기 번거로워서 그런가...)
서버의 DB 테이블이라고 생각하면 안 되고, 클라이언트(유저) 입장에서 리소스가 무엇인지 생각해야 함 - 식별자(ID): 100
- 메시지(? 메시지 맞아요? 확실해요?)를 통한 리소스 조작 (Resource manipulation through representations)
- 이거 소스마다 얘기하는 게 전부 다름. 결국 REST thesis 를 읽어야 문제가 풀릴 거 같음... 더 파봐야 할듯
- 대충 이해한 바로는 representation = 클라이언트가 보내는 content body + 메소드 종류 인 모양?
- 강의에서는 DB와 독립되어 있는 별도의 메시지로 통신한다는 걸 강조함
- 자기 서술적 메시지 (Self-descriptive messages)
- HATEOAS - 앱(서버) 상태의 엔진으로서의 하이퍼미디어 (Hypermedia as the engine of application state)
- 자원의 식별 (Resource identification in requests)
2, 3, 4 다시봐야할듯. 시간부족...
'FastCampus - 한번에 끝내는 Java|Spring 웹 개발 > 03 스프링 입문' 카테고리의 다른 글
스프링 Ch 5 스프링 좀 더 - IoC, DI - 패스트캠퍼스 챌린지 4일차 (0) | 2022.01.27 |
---|---|
스프링 Ch 04 스프링 부트 시작하기 - 패스트캠퍼스 챌린지 3일차 (0) | 2022.01.26 |
스프링 Ch03 웹 개발 개론 4 (2회차) - 패스트캠퍼스 챌린지 2일차 (0) | 2022.01.25 |
스프링 Ch03 웹 개발 개론 3 (2회차) - 패스트캠퍼스 챌린지 1일차 (0) | 2022.01.24 |
스프링 Ch03 웹 개발 개론 1-4 (1회차) (0) | 2022.01.18 |