HTTP - HTTP 메서드의 활용 및 API 설계

2024. 5. 10. 17:21· 인프런 김영한 강의 정리/모든 개발자를 위한 HTTP 웹 기본 지식
목차
  1. 1. 클라이언트에서 서버로 데이터 전송
  2. 2. 클라이언트 -> 서버 데이터 전송/ 4가지 상황 예시
  3. 3. HTTP API 설계 예시
728x90

1. 클라이언트에서 서버로 데이터 전송

  • 쿼리 파라미터를 통한 데이터 전송
  • 메시지 바디를 통한 데이터 전송

1) 쿼리 파라미터를 통한 데이터 전송

- GET 

- 주로, 정렬 필터에서 사용한다.

 

2) 메시지 바디를 통한 데이터 전송

- POST, PUT, PATCH

- 회원 가입, 상품 주문, 새로운 리소스 등록, 리소스 변경

 

2. 클라이언트 -> 서버 데이터 전송/ 4가지 상황 예시

  • 정적 데이터 조회 (이미지, 정적 텍스트 문서)
  • 동적 데이터 조회 ( 주로 검색, 게시판 목록에서 정렬 필터 혹은 검색어 조회)
  • HTML Form을 통한 데이터 전송
  • HTTP API를 통한 데이터 전송

1)  정적 데이터 조회

✔️ 메서드

GET

✔️ 설명

GET은 서버의 데이터를 변경하지 않으므로 안전하고 멱등하다.

✔️ 예시

사용자가 웹 브라우저에 URL을 입력하여 웹사이트의 로고 이미지(logo.png)를 요청하는 경우, 서버는 해당 이미지 파일을 클라이언트로 전송한다.

GET /images/logo.png HTTP/1.1
Host: example.com

 

2) 동적 데이터 조회

✔️ 메서드

GET

✔️ 설명

서버에 동적으로 생성 또는 처리해야 하는 정보(검색 결과, 게시판 목록)를 요청할 때 사용한다.

파라미터를 URL에 포함시켜 필터, 정렬, 검색어등을 서버에 요청한다.

✔️ 예시

사용자가 웹 사이트에서 게시판의 글을 "최신순"으로 정렬하여 조회 요청을 하는 경우, 서버는 요청된 정렬 방식으로 데이터를 처리하여 결과를 반환한다.

GET /board?sort=date&order=desc HTTP/1.1
Host: example.com

 

3) HTML Form을 통한 데이터 전송

✔️ 메서드

GET, POST

✔️ 설명

HTML 폼을 통해 사용자가 입력한 데이터를 서버로 전송할 때 사용한다.

POST 메서드는 서버의 상태를 변경할 수 있다.

✔️ 예시

사용자가 회원 가입 폼에 정보를 입력하고 제출 버튼을 클릭하면, 입력된 데이터는 POST 요청을 통해 서버로 전송되어 사용자 등록 처리가 이루어진다.

POST /signup HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded

username=john&password=1234

 

4) HTTP API를 통한 데이터 전송

✔️ 메서드

POST, PUT, PATCH, DELETE

✔️ 설명 

웹 API를 통해 데이터를 생성(POST), 수정(PUT / PATCH), 삭제(DELETE)를 할 때 사용한다.

이 메서드들 대부분 서버의 상태를 변경한다.

✔️ 예시

REST API를 통해 새로운 주문을 생성하는 경우, POST 메서드를 사용하여 주문 데이터를 서버에 전송한다.

POST /api/orders HTTP/1.1
Host: example.com
Content-Type: application/json

{"product_id": "123", "quantity": "2"}

 

⭐multipart/form-data

파일 업로드 같은 바이너리 데이터를 폼으로 전달하려면 enctype속성을 'multipart/form-data'로 설정해야한다.

 

3. HTTP API 설계 예시

1) 회원 목록 조회

  • URL : /members
  • 메서드 : GET
  • 응답 예시
[
  {"id": 1, "name": "John Doe", "email": "john@example.com"},
  {"id": 2, "name": "Jane Doe", "email": "jane@example.com"}
]

 

2) 특정 회원 조회

  • URL : /members/{id}
  • 메서드 : GET
  • 응답 예시
{"id": 1, "name": "John Doe", "email": "john@example.com"}

 

3) 새로운 회원 등록

  • URL : /members
  • 메서드 : POST
  • 요청 본문
{"name": "Alice Smith", "email": "alice@example.com"}
  • 응답 예시
{"id": 3, "name": "Alice Smith", "email": "alice@example.com"}

 

4) 회원 정보 전체 수정

  • URL : /users/{id}
  • 메서드 : PUT
  • 요청 본문
{"name": "Alice Johnson", "email": "alicej@example.com"}
  • 응답 예시
{"id": 3, "name": "Alice Johnson", "email": "alicej@example.com"}

 

5) 회원 정보 부분 수정

  • URL : /users/{id}
  • 메서드 : PATCH
  • 요청 본문
{"email": "alice_new@example.com"}
  • 응답 예시
{"id": 3, "name": "Alice Johnson", "email": "alice_new@example.com"}

 

6) 회원 삭제

  • URL : users/{id}
  • 메서드 : DELETE 
  • 응답 : 상태코드 '204 No Content' (성공적으로 처리되었으나 응답할 콘텐츠가 없음.)

 

🤔회원 탈퇴 시, DELETE로 데이터를 완전히 제거할 지, 데이터를 DB에 보관하되 안보이게 처리할 지는 애플리케이션 요구사항, 법적 요구 사항 등에 따라 달라질 수 있다.

728x90

'인프런 김영한 강의 정리 > 모든 개발자를 위한 HTTP 웹 기본 지식' 카테고리의 다른 글

HTTP - 헤더(1)  (0) 2024.05.15
HTTP - HTTP 상태코드  (0) 2024.05.10
HTTP - HTTP 메서드의 속성  (0) 2024.05.10
HTTP - HTTP 메서드  (0) 2024.05.10
HTTP - HTTP 특징  (0) 2024.05.10
  1. 1. 클라이언트에서 서버로 데이터 전송
  2. 2. 클라이언트 -> 서버 데이터 전송/ 4가지 상황 예시
  3. 3. HTTP API 설계 예시
'인프런 김영한 강의 정리/모든 개발자를 위한 HTTP 웹 기본 지식' 카테고리의 다른 글
  • HTTP - 헤더(1)
  • HTTP - HTTP 상태코드
  • HTTP - HTTP 메서드의 속성
  • HTTP - HTTP 메서드
백엔드 개발자 - 젤리곰
백엔드 개발자 - 젤리곰
오늘도 배움이 있는 하루가 되길 바라는 개발자
백엔드 개발자 - 젤리곰
backend-gummyBear
백엔드 개발자 - 젤리곰
전체
오늘
어제
  • 분류 전체보기 (145)
    • 인프런 김영한 강의 정리 (60)
      • 스프링 핵심원리 기본편 (12)
      • 모든 개발자를 위한 HTTP 웹 기본 지식 (10)
      • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (3)
      • 자바 ORM 표준 JPA 프로그래밍 기본편 (28)
      • 실전! Querydsl (6)
    • Spring (2)
    • 프로젝트일지 (6)
    • 프로그래밍 언어 (20)
      • Java (17)
      • JavaScript (3)
      • Python (0)
    • 데이터베이스 (4)
      • Oracle (2)
      • ORM (1)
      • SQL 튜닝 (1)
    • 형상관리 (1)
      • Git (0)
    • 알고리즘&자료구조 (34)
      • Algorithm (31)
      • Data Structure (1)
    • CS지식 (4)
    • Cloud (5)
    • 일기 (8)
      • 공부 일기 (3)
      • 독서 일기 (2)
      • 마음 일기 (3)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 프론트엔드역사
  • 클라이언트서버통신
  • 스프링컨텍스트
  • 업캐스팅
  • 객체지향의사실과오해
  • 인터페이스
  • 힙자료구조
  • 객체지향방법론
  • LeetCode17번
  • #{}와${}의차이
  • 프론트엔드개발자업무
  • 데이터베이스정규화
  • ORM프레임워크
  • SublimeText단축키
  • LeetCode200번
  • 다운캐스팅
  • 인프콘
  • 커스텀annotation
  • jquery와javascript
  • dfs알고리즘

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
백엔드 개발자 - 젤리곰
HTTP - HTTP 메서드의 활용 및 API 설계
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.