일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래머스 sql 고득점 kit
- Linux
- select
- 클래스
- 스프링
- Java
- JavaScript
- MySQL
- Git
- select문
- 자바
- scanner
- 프로그래밍
- 리눅스
- 알고리즘
- 형변환
- 입출력
- String클래스
- 자바스크립트
- order by
- 정보처리기사필기요약
- 백준
- 웹개발
- DML
- 프로그래머스 SQL
- 예외처리
- BufferedReader
- 프론트엔드
- sql문
- github
- 개발자
- where
- StringBuilder
- SQL
- 데이터 조회
- 메서드
- mybatis
- 정보처리기사
- 백엔드
- html
- Today
- Total
ToBe끝판왕
[ 개념 정리 ] HTTP 기본 ( HTTP 메서드 - GET / POST / PUT / DELETE / PATCH ) (3) 본문
[ 개념 정리 ] HTTP 기본 ( HTTP 메서드 - GET / POST / PUT / DELETE / PATCH ) (3)
업그레이드중 2025. 1. 9. 18:43
💡 웹 개발자라면 알아야할 HTTP 관련 지식을 파헤쳐 보자 !
✅ HTTP 메서드 란 ?
※ URI의 설계
- 리소스(Resource) 를 식별할 수 있도록 설계
ex) 회원 조회 / 등록 / 수정 / 삭제 의 경우
• /members 로 시작하게 URI를 만든다.
• 이 때, 리소스는 회원이기 때문
👉 즉, URI는 리소스만 식별 !
❓ 그렇다면 리소스에 대한 행위는 어떻게 표현할까 ?
▶️ 리소스에 대한 행위 ( 조회 , 등록 , 수정 , 삭제 ) 를 표현하는 것이 바로 HTTP 메서드 이다.
- HTTP 메서드 정의
• 클라이언트가 서버의 리소스( Resource ) 에 대해 어떤 작업을 수행할지 알려주는 역할 ( = 행위를 표현한다. )
- HTTP 메서드 종류
HTTP 메서드 종류 | 사용 용도 | 데이터 포함 위치 | 특징 |
GET | 리소스 조회 | query( 쿼리 파라미터 , 쿼리 스트링 ) 을 통해 전달 |
메시지 바디를 통해 전달하는것은 권장 X |
POST | 요청 데이터 처리 ( 신규 리소스 등록 , 프로세스 처리 등 ) |
HTTP 요청 메시지 Body | • 요청 데이터를 처리하는 경우 • 다른 메서드로 처리하기 애매한 경우 |
PUT | 리소스 대체 | HTTP 요청 메시지 Body | 클라이언트가 리소스 위치를 알고 URI 지정 |
PATCH | 리소스 부분 변경 | HTTP 요청 메시지 Body | |
DELETE | 리소스 제거 | URL |
- HTTP 메서드 속성
• 안전 ( Safe ) : 호출해도 리소스가 변경되지 않는다.
• 멱등 ( Idempotent ) : 한 번 호출하든 100번 호출하든 결과가 똑같다. 하지만 POST 메서드의 경우 멱등 X
• 캐시가능 ( Cashable ) : 실제로 GET , HEAD 정도만 캐시로 사용
※ 캐시 ( Cache ) 란 무엇인가 ?
• 자주 사용되는 데이터를 미리 저장해두었다가, 다시 요청이 들어왔을 때 빠르게 제공하는 임시 저장 공간
• 웹브라우저나 CDN ( Content Delivery Network ) 에 자주 요청되는 웹페이지 , 이미지 , CSS , javaScript
등을 저장해두고, 다음 요청 시 서버에 요청하지 않고 바로 응답해준다.
• 서버 부하 감소 , 빠른 응답 속도 , 네트워크 트래픽 효과 감소 등의 기대효과를 볼 수 있다.
✅ HTTP 메서드의 활용
- 클라이언트에서 서버로 데이터 전송
• 쿼리 파라미터 : GET 메서드 , 주로 정렬 필터 ( 검색어 )
• 요청 메시지 Body : POST , PUT , PATCH 메서드 , 주로 회원가입 , 상품주문 , 리소스 등록 , 리소스 변경
- 정적 데이터 조회
• 이미지 , 정적 텍스트 문서
• 조회 이므로 GET 메서드 사용
• 일반적으로 쿼리 파라미터 없이 리소스(Resource) 경로로 단순하게 조회
- 동적 데이터 조회
• 주로 검색 , 게시판 목록에서 정렬 필터 ( 검색어 )
• 조회 조건을 줄여주는 필터 , 조회 결과를 정렬하는 정렬 조건에 주로 사용
• 조회이므로 GET 메서드 사용
• 쿼리 파라미터를 사용해서 데이터 전달
ex) ?q=hello&hl=ko
- HTML Form 데이터 전송
• HTML Form submit 의 경우 POST 메서드 전송
• POST 전송 : Content-Type 을 application/x-www-form-urlencoded사용
• POST 전송 : form의 내용을 HTTP 요청 메시지 Body에 담아 전송 ( Key-Value, 쿼리 파라미터 )
• HTML Form 은 GET 전송도 가능하다.
• Content-Type = multipart/form-data : 파일 업로드 같은 바이너리 데이터 전송시 사용
( 다른 종류의 여러 파일과 폼의 내용 함께 전송 )
👉 HTML Form 전송은 GET , POST 메서드만 지원 !!
✅ HTTP API 설계 예시
- HTTP API - 컬렉션
• POST 메서드 기반 등록
ex ) 회원 관리 API 제공
- HTTP API - 스토어
• PUT 메서드 기반 등록
ex ) 정적 컨텐츠 관리 , 원격 파일 관리
- HTTP Form 사용
• 웹 페이지 회원 관리
• GET , POST 메서드만 가능
- POST ( 신규 리소스 등록 특징 )
• 클라이언트는 등록될 리소스의 URI 를 모른다.
ex) 회원등록 : /members ( POST 메서드 )
• 서버가 새로 등록될 리소스 URI를 생성한다.
ex) HTTP/1.1 201 Created Location: /members/100
• 컬렉션 ( Collection )
: 서버가 관리하는 리소스 디렉터리
: 서버가 리소스의 URI를 생성하고 관리
ex) /members
- PUT ( 파일 관리 시스템 )
• 클라이언트가 리소스 URI를 알고 있어야 한다.
ex) 파일 등록 : /files/{filename} ( PUTT 메서드 )
• 클라이언트가 직접 리소스의 URI를 지정
• PUT 메서드의 경우, 있으면 대체(덮어쓰기) 하고 없는 경우 생성한다.
: 파일 등록의 경우 POST 메서드보단 PUT 메서드가 더 알맞다
• 스토어 ( Store )
: 클라이언트가 관리하는 리소스 저장소
: 클라이언트가 리소스의 URI를 알고 관리
ex) /files
- HTML Form 사용
• HTML Form 은 GET , POST 메서드만 지원
• Ajax 같은 기술을 사용해서 해결 가능
• 컨트롤 URI
: GET , POST 메서드만 지원하므로 제약이 있음
: 이런 제약을 해결하기 위해 동사로 된 리소스 경로 사용
: POST의 /new , /edit , /delete 가 컨트롤 URI
: HTTP 메서드로 해결하기 애매한 경우 사용 ( HTTP API 포함 )
ex) /members/{id]/delete
👉 좋은 URI를 설계하기 위해선 위에 주어진 개념들을 참고 !!
※ 해당 내용은 인프런 김영한 강사님의 "모든 개발자를 위한 HTTP 웹 기본지식 " 인강을 참고하였습니다
'■ Programming Skills > 개념 정리' 카테고리의 다른 글
[ 개념 정리 ] HTTP 기본 ( HTTP 헤더 ) (5) (0) | 2025.01.12 |
---|---|
[ 개념 정리 ] HTTP 기본 ( HTTP 상태 코드 ) (4) (0) | 2025.01.09 |
[ 개념 정리 ] HTTP 기본 ( HTTP 개념 / HTTP 메시지 ) (2) (0) | 2025.01.08 |
[ 개념 정리 ] HTTP 기본 ( IP / TCP / UDP / PORT / DNS / URI ) (1) (0) | 2025.01.07 |
[ 개념 정리 ] 특정 View 반환 ( return 과 redirect ) (0) | 2024.12.11 |