HTTP처리방식과 상태코드


HTTP

HTTP (Hypertext Transfer Protocol) - 웹 서버와 웹 클라이언트 사이에서 데이터를 주고 받기 위해 사용하는 통신방식. 컴퓨터에서 다룰 수 있는 데이터라면 무엇이든 전송할 수 있다.

예를 들어 네이버에 ‘http’를 검색했다고 하자. 검색 버튼을 누르는 순간 웹 클라이언트와 웹 서버 사이에 HTTP 연결이 맺어지고, 웹 클라이언트는 웹 서버에 요청(request) 메시지를 보내게 된다. 웹 서버에서는 웹 클라이언트에서 보낸 요청 처리를 진행한 후 그 결과를 웹 클라이언트에 HTTP 응답(response) 메시지를 보냅니다. 이렇게 요청과 응답의 반복으로 웹을 사용하게 된다.



HTTP 처리방식

HTTP 메소드를 통하여 클라이언트가 원하는 처리 방식을 서버에 알려준다. HTTP 메소드는 8가지로 정의되어 있지만 이 중 실질적으로 많이 사용되는 GET, POST, PUT, DELETE. 이 중에서도 GET, POST 위주로 알아보도록 하자.


4가지 메소드 중 GET과 POST가 가장 많이 사용되는 이유는 HTML폼에서 지정할 수 있는 메소드가 GET과 POST밖에 없기 때문이다.

1. GET (READ 역할)

지정한 URL의 정보를 가져오는 메소드. 가장 많이 사용되며 웹 브라우저를 이용하여 서버로부터 웹 페이지, 이미지, 동영상 등을 가져오려고 할 때 GET방식의 요청을 사용한다.

  • URL 부분의 ?뒤에 이름=값, 이름= 값 ... 으로 보낸다.
  • URL의 길이 제한이 있기 때문에 많은 양의 데이터를 보내기 어렵다.
  • 전달되는 사용자의 데이터가 웹 브라우저의 주소창에 노출된다는 보안 측면에서의 단점이 존재한다.


2. POST (CREATE 역할)

리소스를 생성하는 기능을 가지고 있다. ex) 블로그에 글을 올리는 경우

사용자가 입력한 데이터를 서버에 넣을 때 GET과 달리 Body에 사용자 데이터를 담기 때문에 GET의 방식을 보완할 수 있다


3.PUT (UPDATE 역할)

리소스를 변경하는 메소드. ex) 블로그에 작성된 글의 내용을 업데이트 하는 경우


4.DELETE

리소스를 삭제하는 메소드.



상태코드 (status code)

서버에서의 처리 결과를 나타내는 코드이다. 100~500번대 상태 코드가 정의. 참고문서 링크

  • 상태코드 분류

    메소드명의미설명
    1xxInformational임시적인 응답. 현재 클라이언트의 요청까지 처리되었으니 계속 진행하라는 의미.
    2xxSuccess클라이언트의 요청이 서버에서 성공적으로 처리되었다는 의미
    3xxRedirection완전한 처리를 위해 추가적인 동작이 필요한 경우. 주로 서버의 주소 혹은 요청한 URI의 웹 문서가 이동되었으니 다시 시도해보라는 의미
    4xxClient Error클라이언트의 요청 메시지 내용이 잘못된 경우. ex) 없는 페이지를 요청한 경우
    5xxServer Error서버 문제로 메시지 처리에 문제가 발생한 경우. 서버부하, DB처리과정 오류 등이 발생하는 경우에 해당.


  • 자주 사용되는 상태코드

    상태코드텍스트서버에서의 의미
    200OK서버가 요청을 성공적으로 처리했다
    201Created요청이 처리되어 새로은 리소스가 생성되었다. 응답 헤더 Location에 새로운 리소스의 절대 URI를 기록한다.
    202Accepted요청은 접수했지만 처리가 완료되지 않았다. 클라이언트는 응답 헤더의 Location, Retry-After을 참고하여 다시 요청을 보낸다.
    301Moved Permanently지정한 리소스가 새로운 URI로 이동했다. 이동할 곳의 새로운 URI는 응답 헤더 Location에 기록한다.
    303See other다른 위치로 요청하라. 요청 처리 결과를 응답 헤더 Location에 표시된 URI에서 GET으로 취득할 수 있음. 브라우저의 폼 요청을 POST로 처리하고 그 결과 화면으로 redirect시킬 때 자주 응답하는 코드.
    307Temporary Redirect임시로 redirction 요청이 필요하다. 요청한 URI가 없으므로, 클라이언트는 메소드를 그대로 유지한 채 응답 헤더 Location에 표시된 다른 URI로 요청을 재송신할 필요가 있다. 클라이언트는 향후 요청시 원래 위치를 계속 사용해야 한다.
    400Bad Request요청의 구문이 잘못되었다. 클라이언트가 모르는 4xx계열의 응답코드가 반환된 경우에도 400과 동일하게 처리하도록 규정되어 있음.
    401Unauthorized지정된 리소스에 대한 엑세스 권한이 없다.
    403Forbidden지정된 리소스에 대한 엑세스가 금지되었다. 401 이외의 사유로 금지되었을 때.
    404Not Found지정된 리소스를 찾을 수 없다. 리소스의 존재 자체를 은폐하고 싶은 경우에도 사용 가능.
    500Internal Server Error서버쪽에서 에러가 발생했다. 클라이언트가 모르는 5xx계열의 응답코드가 반환된 경우에도 500과 동일하게 처리하도록 규정되어 있음.
    502Bad Gateway게이트웨이 혹은 프록시 역할을 하는 서버가 그 뒤의 서버로부터 잘못된 응답을 받았다
    503Service Unavailable현재 서버에서 서비스를 제공할 수 없다. 보통은 서버의 과부하나 서비스 점검 등 일시적인 상태.






© 2018. by yeo0

Powered by yeo0