웹 서비스를 디자인하는 하나의 설계 방식입니다. 핵심은 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
백엔드(서버, 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