본문으로 건너뛰기

Request():patch()

PATCH 요청을 실행하고 Response 객체를 반환합니다. 이 메서드는 서버의 리소스를 부분적으로 업데이트할 때 사용됩니다.

시그니처

patch(): Response

반환값

Response - 서버 응답을 담고 있는 응답 객체

설명

patch() 메서드는 Request 객체를 생성할 때 지정한 URL로 HTTP PATCH 요청을 보냅니다. PATCH 요청은 일반적으로 기존 리소스를 부분적으로 업데이트할 때 사용되며, 요청 본문에 제공된 필드만 수정합니다.

patch()를 호출하기 전에 setParameter()를 사용하여 요청 본문에 데이터를 추가하세요.

예시

기본 PATCH 요청

-- 사용자의 이메일 필드만 업데이트
local response = Request("https://api.example.com/users/123")
:setParameter("email", "newemail@example.com")
:patch()

JSON 헤더를 포함한 PATCH 요청

-- 여러 필드로 게시글 부분 업데이트
local response = Request("https://api.example.com/posts/456")
:setHeader("Content-Type", "application/json")
:setHeader("Authorization", "Bearer your-token-here")
:setParameter("title", "Updated Post Title")
:setParameter("status", "published")
:patch()

PATCH 응답 처리

-- 사용자 프로필을 업데이트하고 응답 처리
local response = Request("https://api.example.com/users/789")
:setHeader("Content-Type", "application/json")
:setHeader("Authorization", "Bearer token123")
:setParameter("bio", "Updated bio information")
:setParameter("website", "https://mywebsite.com")
:patch()

local data = response:getData()
local statusCode = response:getResponseCode()

if statusCode == 200 then
print("사용자가 성공적으로 업데이트되었습니다!")
print("업데이트된 데이터: " .. data)
elseif statusCode == 204 then
print("사용자가 성공적으로 업데이트되었습니다! (반환된 콘텐츠 없음)")
else
print("사용자 업데이트 실패. 상태: " .. statusCode)
end

조건부 PATCH 업데이트

-- 리소스가 수정되지 않은 경우에만 업데이트
local response = Request("https://api.example.com/articles/123")
:setHeader("Content-Type", "application/json")
:setHeader("If-Match", "etag-value-here")
:setHeader("Authorization", "Bearer token")
:setParameter("content", "Updated article content")
:setParameter("lastModified", "2023-12-01")
:patch()

local status = response:getResponseCode()
if status == 412 then
print("업데이트 실패: 다른 사용자가 리소스를 수정했습니다")
elseif status == 200 or status == 204 then
print("기사가 성공적으로 업데이트되었습니다")
end

필드 선택과 함께 PATCH 사용

-- 특정 필드만 업데이트하고 나머지는 그대로 유지
local response = Request("https://api.example.com/products/456")
:setHeader("Content-Type", "application/json")
:setParameter("price", "29.99")
:setParameter("stock", "150")
:setParameter("discount", "10")
:patch()

local updatedProduct = response:getData()
print("상품 업데이트됨: " .. updatedProduct)

참고

  • patch()를 호출하기 전에 setParameter()를 사용하여 요청 본문에 데이터를 추가하세요.
  • PATCH 요청에는 전체 리소스가 아닌 업데이트하려는 필드만 포함해야 합니다.
  • PATCH는 부분 업데이트를 수행하고 PUT은 전체 리소스를 교체한다는 점에서 서로 다릅니다.
  • 성공적인 PATCH 작업은 일반적으로 다음을 반환합니다.
    • 200 OK - 응답 본문에 업데이트된 리소스 포함
    • 204 No Content - 업데이트가 성공했지만 응답 본문이 필요 없는 경우
  • 이 메서드는 응답 데이터와 상태 코드에 접근할 수 있는 Response 객체를 반환합니다.
  • 요청이 성공했는지 확인하려면 항상 응답 상태 코드를 확인하세요.
  • PATCH 요청은 반드시 멱등성을 가지는 것은 아닙니다. 구현에 따라 동일한 요청을 여러 번 보내면 다른 효과가 발생할 수 있습니다.