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 memanggilpatch() - 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 OKdengan sumber daya yang diperbarui dalam body respons204 No Contentjika 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