오늘

이 글에서는 웹서비스 이용자의 요청과 그에대한 응답 상태를 다뤄보겠습니다. 네트워크에 대한 기본지식이 있으면 이해하기 쉽습니다!

Server라는 이름에서 알 수 있듯이 서버는 어떤 서비스를 제공하는 컴퓨터를 의미합니다. 결국 우리가 사용하는 웹서비스도 대부분 이 서버라는 컴퓨터에 웹페이지 파일을 요청하면, 그 웹 페이지 파일을 서버가 제공하고 웹 브라우저가 그 파일을 우리가 시각적으로 보는 형태로 해석해주는 형태입니다!
HTTP는 Hypert Text Transfer Protocol의 약자입니다. Hypert Text를 전송하기 위해 만든 약속이라는 뜻입니다. 이때 Hyper Text는 문서 안 링크를 통해 다른 문서로 이동가능한 형태의 문서를 일컫습니다. 우리가 사용하는 웹페이지에서 링크를 클릭하면 이동가능하죠? 웹 문서들은 대부분 html(Hyper Text Markup Language)로 작성되기 때문입니다.
여러사람이 어떤 공통된 일을 할때는 규칙과 약속을 만들어야합니다. 그래야 어떤 행동을 이해하는 형식을 마련할 수 있기 때문입니다. 때문에 여러 사람이 상호작용하는 컴퓨터 네트워크 관련 분야에서는 어떤 표준과 규율등을 정하는 경우가 많은데, 이들을 프로토콜이라고 부릅니다. HTTP도 네트워크 분야의 수많은 프로토콜들 중 하나입니다.
웹 서비스에서 HTTP프로토콜을 따를 때 클라이언트가 서버에게 요청하는 표준적인 방법입니다.
크게 주요 다음 4가지의 주요 메서드가 존재합니다. : GET, PUT, DELETE, POST
공통적으로 다음 형식을 띕니다
[METHOD] [URL형식의 무언가]
url이라 어떤 디렉토리 같지만, 실제로 서버의 파일 디렉토리를 의미하지는 않습니다. 서버에서 각 url마다 어떤 함수들을 매핑해놓습니다. method와 함께 메세지가 전달되면 해당 url에 매핑된 함수들이 서버에서 호출됩니다.
서버에게 어떤 데이터를 요청하는 메서드입니다.
GET /users/1
이런 형태를 띕니다.
실제로 google.com 접속 요청을 하면 다음 메세지가 날아갑니다.
GET / HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
Accept: text/html,application/xhtml+xml
Accept-Language: ko-KR,ko;q=0.9
Connection: keep-alive
Upgrade-Insecure-Requests: 1POST /users
{
"name": "changwoon"
}위 형태의 메세지가 전송되며 새로운 데이터를 생성하는 역할을 합니다.
Post 뒤의 /users는 파일 디렉토리처럼 생겨서 오해를 일으키지만, 실제로는 서버에서 어떤 함수를 호출하도록 하는 역할입니다. 그 함수는 아래 body에 넣은 데이터를 새로 추가합니다.
PUT /users/1
{
"name": "new name"
}PUT은 기존 데이터의 내용을 수정하도록 합니다.
DELETE /users/1
DELETE는 기존 데이터의 내용을 삭제하도록 합니다.
클라이언트가 요청을 하면 서버는 응답을 보냅니다. 이때 응답의 결과를 분류해 응답 메세지와 함께 보냅니다.
200: 정상처리 (GET에 대한 응답) 201: 생성 성공(POST에 대한 응답) 204: 삭제성공(DELETE에 대한 응답)
400: Bad Request 요청에 문제가 있다는 뜻입니다 401: Unauthorized 로그인을 하지 않은 클라이언트의 요청입니다 403: Forbidden 로그인을 했으나 권한이 없는 클라이언트의 요청입니다. 404: Not Found 요청한 데이터/URL이 존재하지 않습니다
500: Interneal Server Error 서버 코드에 오류가 생긴 상황입니다 503: Service Unavailable 코드 오류는 아닌데, 서버 과부화등에 의해 서버가 다운된 상황입니다.
댓글 0