payload
란?API 개발을 하다 보면 payload
라는 단어를 자주 접하게 됩니다.
실제로 payload
는 요청 처리 과정에서 핵심적인 개념 중 하나입니다.
이 글에서는 payload
의 의미와 역할, 실제 코드에서 어떻게 다루는지를 정리해 보겠습니다.
payload
는 API 요청(Request)에서 클라이언트가 서버로 보내는 "데이터 내용"을 의미합니다. 특히 POST
, PUT
, PATCH
같은 요청에서는 어떤 데이터를 생성하거나 수정할지를 이 payload
안에 담아 전달합니다.
다음과 같은 HTTP 요청이 있다고 가정해보겠습니다:
PATCH /users/42
Content-Type: application/json
{
"username": "johndoe_92",
"email": "johndoe@example.com",
"phone": "010-1234-5678",
"profile": {
"bio": "개발자이자 커피 애호가입니다.",
"location": "부산광역시 해운대구",
"website": "https://johndoe.dev"
},
"preferences": {
"newsletter": true,
"language": "ko"
}
}
여기서 Content-Type
이 application/json
으로 명시되어 있으며, 본문에 포함된 JSON 전체가 바로 payload
입니다. 즉, 이 데이터가 서버에 전달되어 업데이트에 활용됩니다.
실제 백엔드 코드에서는 다음과 같이 payload
를 다룹니다:
payload = event.json_body
event
: API Gateway 등에서 들어온 전체 요청 이벤트json_body
: 요청 본문(JSON)을 파싱한 파이썬 딕셔너리따라서 payload
는 Python에서 dict
형태로 접근하게 되며, 원하는 값을 꺼내거나 유효성 검사를 하는 데 사용됩니다.
역할 | 설명 |
---|---|
수정 데이터 전달 | 어떤 필드를 어떻게 수정할지 서버에 전달하는 용도 |
유효성 검사 대상 | 예: Project(**payload) 형태로 모델 생성 시 값 검증 수행 |
쿼리 생성을 위한 기반 | 예: get_update_query(payload) 처럼 SQL 문을 생성할 때 사용 |
보안 및 권한 필터링 대상 | 허용된 필드만 추출하거나 특정 필드에 대한 권한을 검사하는 데 사용 |
payload
의 내용을 조건에 따라 처리할 수 있습니다.
if "profile" in payload and "location" in payload["profile"]:
print("변경할 지역:", payload["profile"]["location"])
위 코드처럼 필요한 값을 꺼내어 로직에 반영할 수 있습니다.
정리하면, payload
는 클라이언트가 서버로 보내는 JSON 본문이며, 데이터 생성이나 수정을 위한 핵심 입력값입니다. API 서버는 이 값을 기반으로 데이터베이스를 업데이트하거나 유효성을 검사하고, 필요한 로직을 실행합니다.
API에서 payload
는 마치 "요청 내용이 담긴 상자"처럼 생각할 수 있습니다. 서버는 이 상자를 열어 필요한 내용을 꺼내 처리하게 됩니다.
이 포스팅이 payload
에 대한 개념을 이해하는 데 도움이 되었기를 바랍니다. 추가로 궁금한 점이 있다면 댓글로 남겨주세요.