웹 개발
(웹) 간단하게 정리하는 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 - 서비스 정지(점검 등등)