[Architecture] REST

Yoo·2025년 8월 21일

REST(Representational State Transfer)

  • 정의

    웹 서비스를 디자인하는 하나의 설계 방식입니다. 핵심은 Resource, Verb, Representation으로 표현하고 구분합니다.

  • 구성 요소

    URI: 특정 데이터의 고유한 주소, /를 사용하여 관계를 나타낼 수 있다.

    HTTP 메서드
    GET(조회): 서버에 데이터를 요청
    ex) 데이터 조회, 리스트 출력 등
    POST(생성): 서버에 새 데이터를 생성
    ex) 데이터 저장, 시스템 설정 등
    PUT(수정): 기존 데이터를 전체 수정
    PATCH(부분 수정): 기존 데이터를 부분 수정
    DELETE(삭제): 특정 자원을 삭제

    Representation: 데이터를 JSON, XML 등으로 표현(보통 JSON 응답)

  • 메서드 설계

    모든 유저 조회 GET/users
    유저 1명 조회 GET/users/1
    유저 생성 POST/users
    유저 수정 PUT/users/1
    유저 삭제 DELETE/users/1

REST Architecture 원칙 (RESTful API)

백엔드(서버, DB 등)와 프론트엔드(UI)는 독립적으로 개발
→ 유지보수 편리, 독립 개발
서버는 클라이언트의 상태를 저장하지 않음
→ 서버 확장 용이
응답에 따라 클라이언트는 결과를 캐시
→ 반복적인 요청을 빠르게 처리
서버는 여러 계층으로 구성
→ 보안 계층 추가
모든 API는 일관된 방식으로 데이터에 접근
서버는 클라이언트에 실행 가능한 코드를 제공

데이터 전달 위치

Query String: URL?key=value 형태로 붙는 데이터

@router.get("/dns/apply")
def get_dns(server: str = Query(...)):

Request Body: URL에 표시되지 않고, 본문에 숨겨진 JSON으로 전송

"server" : "Google"

Path Parameter: URL에 값이 포함되는 구조

@router.get("/dns/{user_name}")
def get_user(user_name : string):

GET → Query, Path
POST → Body, Query
PUT → Body
PATCH → Body
DELETE → Query, Path

profile
월1억벌기

0개의 댓글