[spring] part3. 스프링입문 - 03 웹 개발 개론

6749 단어 SpringSpring

Ch03. 웹 개발 개론

Web 개론

Web 이란?

World Wide Web(WWW,W3): 모든 사람들이 정보를 공유하는 전세계적인 정보 공간

Web site : HRML로 구성된 여러 사이트들
API : ex> Kakao Open API, Google Open API, Naver Open API ...
Web의 기반
User Interface : Chrome, Safari, Explorer, Smart Watch, IP TV ...

Web의 기본 3가지 요소

URI(Uniform Resource Identifier) : 리소스 식별자 - 다양한 정보에 접근 할 수 있는 정보
HTTP(Hypertext Transfer Protocol) : 어플리케이션 컨트롤할 때 사용 - 어떠한 프로토콜을 통해서 주고받을 것인가
HTML(Hyper Text Markup Language) : 특정한 글자의 색상, 굵기, 이미지의 크기 등 여러가지 정보들을 markup할 수 있음, 하이퍼미디어 포맷, 사용자가 알아보기 쉬운 형태로 표현, 시각적으로 표현하기 위해서 만든 html language


REST

  1. Client,Server : 클라이언트와 서버가 서로 독립적으로 분리되어 있어야 한다.
  2. Stateless : 요청에 대해 클라이언트의 상태를 서버에 저장하지 않는다.
    치즈버거 주세요 + 콜라 주세요 (x)
    치즈버거와 콜라주세요 (o)
  3. Cache : 클라이언트는 서버의 응답을 Cache(임시저장) 할 수 있어야 한다.
    클라이언트가 Cache를 통해서 응답을 재사용할 수 있어야 한다.
    -> 서버의 부하를 낮출 수 있어야 한다.
  4. 계층화 : 서버와 클라이언트 사이에 방화벽, 게이트웨이, Proxy 등 다양한 계층 형태로 구성이 가능해야 하며, 이를 확장 할 수 있어야 한다.
  5. 인터페이스가 일관성 : 인터페이스의 일관성을 지키고, 아키텍처를 단순화시켜 작은 단위로 분리하여, 클라이언트, 서버가 독립적으로 개선 될 수 있어야 한다.
    서버가 바뀌어도 클라이언트에 지장이 없어야 한다. (역도 성립)
  6. Code on Demand(Optional) : 자바 애플릿, 자바스크립트, 플래시 등 특정한 기능을 서버로부터 클라이언트가 전달 받아 코드를 실행할 수 있어야 한다.

인터페이스의 일관성

1. 자원의 식별

웹 기반의 REST에서는 리소스 접근을 할 때 URI를 사용 한다.
https://foo.co.kr/user/100
resources : user
식별자 : 100

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

  • Web에서는 다양한 방식으로 데이터를 전달 할 수 있다.
  • HTML, XML, JSON, TEXT 등을 가장 많이 사용한다.
  • 어떤 타입의 데이터인지를 알려주기 위해 HTTP Header 부분에 content-type을 통해서 데이터의 타입을 지정해 줄 수 있다.
  • 리소스 조작을 위해 데이터 전체를 전달 하지 않고, 이를 메시지로 전달한다.
    서버와 클라이언트가 독립적으로 확장이 불가능하기 때문에

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 -사용자의 정보 삭제

  • 그 외의 담지 못한 정보들은 URL의 메시지를 통하여 표현 한다.

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

  • REST API를 개발할 때 단순히 Client 요청에 대한 데이터만 응답 해주는 것이 아닌 관련된 리소스에 대한 Link 정보까지 같이 포함 되어져야 한다.
  • 이러한 조건들을 잘 갖춘 경우 REST Ful 하다고 표현하고, 이를 REST API 라고 부른다.
    규악이기 때문에, "반드시가 아니라 이 정도는 지킨다." 느낌 -> 현업에서는 잘 사용하지 않는다.

URI 설계 패턴

1. URI(Uniform Resource Identifier)
인터넷에 특정 자원을 나타내는 주소 값 (유일 응답은 달라질 수 있다)

요청 : http://fastcampus.co.kr/resource/sample/1
응답 : fastcampus.pdf, fastcampus.docx

2. URL(Uniform Resource Locator)
인터넷 상의 자원, 특정 파일이 어디 위치 하는지 식별하는 주소

요청 : http://fastcampus.co.kr/fastcampus.pdf

URL은 URI의 하위 개념이다.

URI 설계원칙

원칙일뿐...

HTTP Protocol

: Web에서 데이터를 주고 받는 프로토콜

  • 실제로는 다양한 컴퓨터에서 다룰 수 있는 것은 모두 전송할 수 있다. (XML,JSON, Image , Voice ...)
  • HTTP는 TCP를 기반으로 한 REST의 특징을 모두 구현하고 있는 Web 기반의 프로토콜
  • HTTP는 메시지를 주고(Requst) 받는(Response) 형태의 통신방법이다.
    클라이언트는 서버에 요청을 하고 일정시간 동안 응답이 오지 않거나 일정시간 동안 서버와 connection이 맺어지지 않으면 클라이언트는 해당 요청에 대해서 취소를 함

Method(HTTP의 요청을 처리)

GET : 리소스 추가, 정보를 얻어올 때
POST : 리소스 생성, 추가
PUT : 리소스 갱신, 생성
DELETE : 리소스 삭제
HEAD : 헤더 데이터 취득
OPTIONS : 지원하는 메소드 취득
TRACE : 요청메시지 반환
CONNECT : 프록시 동작의 터널 접속으로 변경

멱등성 : 몇 번을 요청해도 같은 응답이 온다
의미CRUD멱등성안정성Path VariableQuery ParameterDaraBody
GET리소스 추가, 정보를 얻어올 때ROOOOX
POST리소스 생성, 추가CXXOO
PUT리소스 갱신, 생성C/UOXOO
DELETE리소스 삭제DOXOOX
HEAD헤더 데이터 취득OO
OPTIONS지원하는 메소드 취득O
TRACE요청메시지 반환O
CONNECT프록시 동작의 터널 접속으로 변경X

HTTP Status Code

: 서버가 클라이언트한테 처리를 하고 나서 응답의 상태를 나태는 코드

의미내용
1XX처리중처리가 계속되고 있는 상태. 클라이언트는 요청을 계속 하거나 서버의 지시에 따라서 재요청
2XX성공요청의 성공
3XX리다이텍트다른 리소스로 리다이렉트. 해당 코드를 받았을 때는 Response의 새로운 주소로 다시 요청
4XX클라이언트 에러클라이언트의 요청에 에러가 있는 상태. 재전송 하여도 에러가 해결되지 않는다
5XX서버에러서버 처리중 에러가 발생한 상태. 재 전송시 에러가 해결 되었을 수도 있다.

자주 사용하는 코드

의미
200성공
201성공. 리소스를 생성 성공
301리다이렉트, 리소스가 다른 장소로 변경됨을 알림
303리다이렉트, Client에서 자동으로 새로운 리소스로 요청 처리
400요청 오류, 파라미터 에러
401권한 없음 (인증 실패)
404리소스 없음 (페이지를 찾을 수 없음)
500서버 내부 에러 (서버 동작 처리 에러)
503서비스 정지 (ex. 점검)

좋은 웹페이지 즐겨찾기