웹 애플리케이션은 수행되는 위치에 따라 FrontEnd(Client)와 BackEnd(Server)로 분류
FrontEnd
BackEnd
일반적인 Web Application의 동작
클라이언트에서 최초 요청(request)을 서버에 전달하고 서버는 요청을 받아서 처리한 후 그 응답(response)을 HTML 형태로 클라이언트에게 전송하고 이 후 추가적인 자원이 필요하면 다시 요청한 후 서버가 응답을 하는 구조
최근에는 서버가 클라이언트에게 HTML을 전송하지 않고 문자열 형식으로 만들어진 데이터를 전달하고 클라이언트에서 해석을 해서 출력하는 방식을 많이 사용
서버가 HTML을 전송하게 되면 클라이언트가 다양한 형태로 존재하는 경우 서버를 여러 개 준비를 해야 할 가능성이 생긴다.
Web 3.0
WOA(Web Oriented Architecture)
프레임워크를 이용한 개발을 권장
[프로토콜]://[호스트][:포트]/[경로]/[QueryString - Parameter]#Fragment웹 클라이언트에서 웹 서버에 존재하는 Application에 대한 API(Application Programming interface)
URL을 RPC(Remote Procedure Call)로 바라보는 시각이 있고 다른 하나는 REST(Representational State Transfer)로 바라보는 시각이 있음
RPC - 원격 프로시저 호출
클라이언트가 네트워크 상에 있는 서버가 제공하는 API 함수를 호출하는 것
URL의 경로를 API 함수 이름으로 하고 쿼리 스트링을 함수의 매개변수로 간주해서 웹 클라이언트에서 URL을 전송하는 것은 웹 서버의 API 함수를 호출하는 것으로 인식하는 것
이 경우는 함수의 이름이 대부분 동사
search라는 API 함수에 test라는 데이터를 전송
http://blog.example.com/search?q=test&debug=true
REST
웹 서버에 존재하는 요소들을 모두 리소스로 정의하고 URL을 통해 웹 서버의 특정 리소스를 표현한다고 하는 개념
리소스는 시간이 지남에 따라 상태가 변할 수 있기 때문에 클라이언트와 서버 간의 데이터 교환을 리소스 상태의 교환으로 간주
리소스에 대한 조작을 HTTP 메서드로 구분: GET, POST, PUT, DELETE, PATCH 등
웹 클라이언트에서 URL을 전송하는 것이 웹 서버에 있는 리소스 상태에 대한 데이터를 주고 받는 것으로 간주
http://blog.example.com/search/test
단축 URL
URL을 간단하게 줄여서 사용하는 방식
http://example.com/index.php?page=foo
=> http://eample.com/foo
http://example.com/index.php?page=consulting/marketing => http://example.com/consulting/marketing
http://example.com/porducts?category=2&pid=25 => http://example.com/proudcts/2/25
get
post
put : 리소스 전체 수정
patch : 리소스 일부 변경 - 사용을 권장하지 않음
delete : 리소스 삭제
head : 리소스 헤더 취득
options : 리소스가 지원하는 메서드 취득
trace : loopback 시험에 이용
connect : 프록시 동작의 터널 접속으로 변경
예전에는 get과 post만 사용했는데 최근에는 put과 delete를 같이 사용