Lewati ke konten utama

Request():patch()

Menjalankan permintaan PATCH dan mengembalikan objek Response. Metode ini digunakan untuk memperbarui sebagian sumber daya di server.

Tanda Tangan

patch(): Response

Mengembalikan

Response - Objek respons yang berisi respons server

Deskripsi

Metode patch() mengirimkan permintaan HTTP PATCH ke URL yang ditentukan saat membuat objek Request. Permintaan PATCH biasanya digunakan untuk melakukan pembaruan sebagian pada sumber daya yang ada, hanya memodifikasi field yang diberikan dalam body permintaan.

Gunakan setParameter() untuk menambahkan data ke body permintaan sebelum memanggil patch().

Contoh

Permintaan PATCH Dasar

-- Update only the email field of a user
local response = Request("https://api.example.com/users/123")
:setParameter("email", "newemail@example.com")
:patch()

Permintaan PATCH dengan Header JSON

-- Partially update a post with multiple fields
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()

Memproses Respons PATCH

-- Update user profile and handle response
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("User updated successfully!")
print("Updated data: " .. data)
elseif statusCode == 204 then
print("User updated successfully! (No content returned)")
else
print("Failed to update user. Status: " .. statusCode)
end

Pembaruan PATCH Bersyarat

-- Update only if resource hasn't been modified
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("Update failed: Resource has been modified by another user")
elseif status == 200 or status == 204 then
print("Article updated successfully")
end

PATCH dengan Pemilihan Field

-- Update specific fields while leaving others unchanged
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("Product updated: " .. updatedProduct)

Catatan

  • Gunakan setParameter() untuk menambahkan data ke body permintaan sebelum memanggil patch()
  • Permintaan PATCH hanya boleh berisi field yang ingin Anda perbarui, bukan seluruh sumber daya
  • PATCH berbeda dari PUT di mana PATCH melakukan pembaruan sebagian, sedangkan PUT menggantikan seluruh sumber daya
  • Operasi PATCH yang berhasil biasanya mengembalikan:
    • 200 OK dengan sumber daya yang diperbarui dalam body respons
    • 204 No Content jika pembaruan berhasil tetapi tidak memerlukan body respons
  • Metode mengembalikan objek Response yang dapat Anda gunakan untuk mengakses data respons dan kode status
  • Selalu periksa kode status respons untuk memastikan permintaan berhasil
  • Permintaan PATCH belum tentu idempoten - melakukan permintaan yang sama berkali-kali dapat memberikan efek yang berbeda tergantung pada implementasinya