웹 개발이란?

spring

WEB 의 기본 3가지 요소 #

REST API #

REST (Representational State Transfer : 자원의 상태 전달) - 네트워크 아키텍처

6가지 아키텍쳐 #

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

  2. Stateless : 요청에 대하여 클라이언트의 상태를 서버에 저장하지 않는다.

ex) 햄버거주세요 / 콜라도 같이 주세요 (X) 클라이언트 상태를 서버에 저장하지않으므로
햄버거주세요 / 햄버거 콜라 주세요 (O) 매번 새롭게 요청해야 한다.

  1. Cache : 클라이언트는 서버의 응답을 캐시(임시저장)할 수 있어야함. 클라이언트가 캐시를 통하여 응답을 재사용할 수 있어야 하며, 이를 통하여 서버의 부하를 낮춤.
  2. 계층화(Layer System) : 서버와 클라이언트 사이에 방화벽, 게이트웨이, Proxy 등 다양한 계층 형태로 구성이 가능해야하며 이를 확장할 수 있어야 한다.
  3. 인터페이스 일관성 : 인터페이스의 일관성을 지키고, 아키텍처를 단순화시켜 작은 단위로 분리하여 클라이언트, 서버가 독립적으로 개선될수 있어야 한다.
  4. Code on Demand (Optional) : 자바 애플릿, 자바스크립트, 플래시 등 특정한 기능을 서버로 부터 클라이언트가 전달받아 코드를 실행할수 있어야 한다.

다음의 일관성이 잘 지켜졌는지에 따라 REST를 잘 사용햇는지 판단할 수 있다 #

https://foo.co.kr/user/100 - Resource : user / 식별자 : 100

ex) 서버의 user 라는 정보의 전호번호를 number 라고 결정. 이 정보를 클라이언트와 주고받을때 그대로 사용하고, 그 후에 서버 Resource 변경으로 phone-number 로 바뀐다면 클라이언트는 처리못하고 에러가 난다. 그러므로 별도의 메세지 형태로 데이터 주고받고 client-sever가 독립적으로 확장 가능하게한다.

URI 설계 패턴 #

URI 설계 원칙 #

HTTP Protocol #

 의미CRUD멱등성안정성
GET리소스 취득ReadOO
POST리소스 생성, 추가CXX
PUT리소스 갱신, 생성C/UpdateOX
DELETE리소스 삭제DeleteOX
HEAD헤더 데이터 취득   
OPTIONS지원하는 메소드 취득   
TRACE요청메세지 반환   
CONNECT프록시 동작의 터널접속으로 변경   

( 멱등성 : 몇번을 요청해도 같은 데이터의 응답이 오는것 )

HTTP Status Code #

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

자주 사용되는 코드 #