HTTP 메서드 활용

상훈·2024년 2월 7일
  1. 클라이언트에서 서버로 데이터 전송
  2. HTTP API 설계

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

데이터 전달 방식은 크게 2가지

  1. 쿼리 파라미터를 통한 데이터 전송
    • GET
    • 주로 정렬 필터(검색어)
  2. 메시지 바디를 통한 데이터 전송
    • POST, PUT, PATCH
    • 회원 가입, 상품 주문 등 데이터 베이스에 영향을 주는 작업

데이터 조회 및 전송 4가지

1. 정적 데이터 조회

쿼리 파라미터 미사용

  • 이미지, 정적 텍스트 문서 등을 조회
  • GET 을 사용하여 조회
  • 단순 리소스 경로로 조회

2. 동적 데이터 조회

쿼리 파라미터 사용

  • 검색, 정렬 필터

  • GET 사용

  • 파라미터를 사용하여 데이터 전달

3. HTML Form 데이터 전송

message body에 데이터 담아서 전송 (key = value)

  • 회원 가입, 상품 주문 등 데이터베이스에 영향을 주는 데이터 전송
  • POST 메서드 사용 (데이터 베이스에 영향을 주지 않는 단순 조회에서는 GET + parameters 사용 가능)
  • Content-Type:
    • default : application/x-www-form-urlencoded
    • 여러 파일과 폼 함께(image + form data): multipart/form-data

4. HTML API 데이터 전송

Application/json 을 주로 사용

  • 서버와 서버간의 백엔드 시스템 통신에서 주로 사용

  • HTML Form 전송 대신 자바 스크립트를 통한 통신에 사용(AJAX)

  • POST, PUT, PATH (message body), GET(parameter) 모두 가능

2. HTTP API 설계 예시

  • POST와 PUT을 정리하고 GET과 POST만 사용가능한 제약이있는 HTML FORM 의 설계 방법
  1. HTTP API - 컬렉션
    • POST 기반 등록
  2. HTTP API - 스토어
    • PUT 기반 등록
  3. HTML FORM 사용
    • GET, POST 만 사용 가능

1. API 설계 - POST 기반 등록

회원 관리 시스템

Ex) API 설계는 리소스만 식별하자!

  • 회원 목록 /members -> GET

  • 회원 등록 /members -> POST

  • 회원 조회 /members/{id} -> GET

  • 회원 수정 /members/{id} -> PATCH, PUT, POST

  • 회원 삭제 /members/{id} -> DELETE

특징

  1. 클라이언트는 등록될 리소스의 URI(name, location)를 모른다

    • 회원 등록 /members -> POST
  2. 서버가 새로 등록되 리소스 URI를 생성해준다.

  3. 컬렉션(Collection)

    자원을 그룹화하거나 모아둔 것

    • 서버가 관리하는 리소스 디렉토리

    • 서버가 리소스의 URI를 생성하고 관리

    • 위에서 컬렉션은 /members

2. API 설계 - PUT 기반 등록

파일 관리 시스템

Ex)

  • 파일 목록 /files -> GET

  • 파일 조회 /files/{filename} -> GET

  • 파일 등록 /files/{filename} -> PUT

  • 파일 삭제 /files/{filename} -> DELETE

  • 파일 대량 등록 /files -> POST

특징

  1. 클라이언트가 리소스 URI를 알고 있어야 한다.

    • 파일 등록 : /files/{filename} -> PUT
  2. 클라이언트가 직접 리소스의 URI를 지정

  3. 스토어(store)

    데이터를 저장하거나 생성하는 역할을 하는 엔드포인트

    • 클라이언트가 관리하는 리소스 저장소
    • 클라이언트가 리소스의 URI를 알고 관리
    • 위에서 스토어는 /files

3. HTML FORM 사용

GET, POST만 사용 가능

  • 컨트롤 URI
    • GET, POST만 지원하는 제약을 해결하기 위해 동사로 된 리소스 경로 사용
    • /new, /edit, /delete가 컨트롤 URI
    • HTTP로 해결하기 애매한 경우 사용
profile
문송 개발자

0개의 댓글