웹 개발

(웹) 간단하게 정리하는 HTTP Protocol

너어디사니 2024. 5. 10. 20:10
  • HTTP(Hyper Text Transfer Protocol) 로 RFC 2616에서 규정된 Web에서 데이터를 주고 받는 프로토콜
  • 이름에는 하이퍼 텍스트 전송용 프로토콜로 정의되어 있지만 실제로는 HTML, XML, JSON, Image, Voice, Video, Javascript, PDF 등 다양한 컴퓨터에서 다룰수 있는 것은 모두 전송이 가능하다
  • HTTP는 TCP를 기반으로 한 REST의 특징을 모두 구현하고 있는 Web 기반의 프로토콜
  • HTTP는 Request & Response(주고 받는) 형태의 통신 방법
  • HTTP의 요청을 특정하는 Method는 8가지가 있다
    • REST를 구현하기 위한 인터페이스 이니 숙지해야 한다

의미 CRUD 멱등성 안정성 Path Variable Query Parameter DataBody

GET 리소스 취득 R O O O O X
POST 리소스 생성 및 추가 C X X O O
PUT 리소스 갱신 및 생성 C / U X X O O
DELETE 리소스 삭제 D O X O O X
HEAD 헤더 데이터 취득 - O O - - -
OPTIONS 지원하는 메소드 취득 - O - - - -
TRACE 요청 메세지 반환 - O - - - -
CONNECT 프록시 동작의 터널 접속으로 변경 - X - - - -
  • 멱등성 : 다수의 같은 요청을 해도 같은 응답이 내려오는 것
  • QueryParameter : 검색을 할 때 여러가지 매개 변수 인자
  • 응답 코드
    • 1XX : 요청을 성공적으로 받았으며 서버가 해당 작업을 진행중
    • 2XX : 요청을 성공적으로 받았으며 요청이 완료됨
      • 200(OK) : 요청이 성공적으로 처리됨
      • 201(Created) : 요청이 성공적으로 처리되고 리소스의 생성을 성공
      • 202(Accepted) : 요청이 접수되었으나 처리가 완료되지 않았다
      • 204(Not Content) : 성공적으로 처리되었지만 답장에 적어 보낼 내용은 없음 ← 리소스 삭제시 사용
      • 206 : 요청에서 지정한 대로 일부 컨텐츠만 보냄
    • 3XX : 요청을 수행하기 위해서는 해당 요청을 다른 주소로 보내는 등 추가적인 조치가 필요, 자료의 위치가 변경되어 새 URL로 자동 이동 시켜줄 때 사용한다
      • 301 (Moved Permanently) : 리다이렉트, 리소스가 다른 장소로 변경됨을 알림
      • 302 (Found) : 리다이렉트, 요청 메서드가 GET으로 변하고 본문이 제거될 수 있음
      • 303 (See Other): 리다이렉트, Client에서 자동으로 새로운 리소스로 요청을 처리
      • 304 (Not Modified): 리다이렉트, 마지막 요청 이후 요청한 페이지는 수정되지 않음, 캐시를 목적으로 사용
      • 307 (Temporary Redirect) : 리다이렉트 시에 요청 메서드와 본문 유지(요청 메서드를 변경하면 안된다)
      • 308 (Permanent Redirect) : 리다이렉트 시에 요청 메서드와 본문 유지(처음 POST를 보내면 리다이렉트로 POST 유지)
    • 4XX : 클라이언트의 요청에 문제가 있기 때문에 수행할 수 없음
      • 400 : Bad Request - 요청오류, 파라미터 에러
      • 401 : Unauthorized - 로그인이 필요한 요청인데 로그인이 되어 있지 않음(인증 실패) ← 인증정보 부족
      • 403 : Forbidden - 로그인이 되어 있지만 요청을 보낼 권한이 없음
      • 404 : Not Found - 요청에 해당하는 데이터가 없음, 또는 URL이 잘못됨
      • 405 : Method Not Found - 서버가 요청 메서드를 알고 있지만 대상 리소스가 이 메서드를 지원하지 않음
    • 5XX : 요청에는 문제가 없지만 서버에 이상이 있어 응답 할 수 없음
      • 500 : Internal Server Error - 서버 내부의 오류 발생
      • 501 : Not Implemented - 서버에 해당 기능이 없음
      • 502 : Bad Gateway - 서버 과부하 또는 기타 네트워크 문제로 통신이 제대로 되지 않음
      • 503 : Service Unavaildable - 서비스 정지(점검 등등)