Lewati ke konten utama

Request():put()

Menjalankan permintaan PUT dan mengembalikan objek Response. Metode ini digunakan untuk sepenuhnya menggantikan sumber daya di server.

Tanda Tangan

put(): Response

Mengembalikan

Response - Objek respons yang berisi respons server

Deskripsi

Metode put() mengirimkan permintaan HTTP PUT ke URL yang ditentukan saat membuat objek Request. Permintaan PUT biasanya digunakan untuk sepenuhnya menggantikan sumber daya yang ada dengan data baru, atau untuk membuat sumber daya di URL tertentu.

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

Contoh

Permintaan PUT Dasar

-- Replace a user's complete data
local response = Request("https://api.example.com/users/123")
:setParameter("name", "John Smith")
:setParameter("email", "john.smith@example.com")
:setParameter("age", "35")
:setParameter("status", "active")
:put()

Permintaan PUT dengan Header JSON

-- Replace an entire post with new content
local response = Request("https://api.example.com/posts/456")
:setHeader("Content-Type", "application/json")
:setHeader("Authorization", "Bearer your-token-here")
:setParameter("title", "Completely New Title")
:setParameter("body", "Completely new post content")
:setParameter("userId", "1")
:setParameter("status", "published")
:put()

Memproses Respons PUT

-- 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("name", "Jane Doe")
:setParameter("email", "jane.doe@example.com")
:setParameter("bio", "Software Developer")
:setParameter("website", "https://jane.example.com")
:setParameter("location", "San Francisco")
:put()

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

if statusCode == 200 then
print("User updated successfully!")
print("Updated user data: " .. data)
elseif statusCode == 201 then
print("User created successfully!")
print("New user data: " .. data)
else
print("Failed to update user. Status: " .. statusCode)
end

PUT untuk Pembuatan Sumber Daya

-- Create a new resource at a specific URL
local response = Request("https://api.example.com/files/document-v2")
:setHeader("Content-Type", "application/json")
:setParameter("content", "This is the new document content")
:setParameter("version", "2.0")
:setParameter("author", "John Doe")
:put()

local status = response:getResponseCode()
if status == 201 then
print("Document created successfully!")
elseif status == 200 then
print("Document replaced successfully!")
else
print("Operation failed with status: " .. status)
end

Pembaruan PUT 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("title", "Updated Article Title")
:setParameter("content", "Updated article content")
:setParameter("author", "John Doe")
:put()

local status = response:getResponseCode()
if status == 412 then
print("Update failed: Resource has been modified by another user")
elseif status == 200 or status == 201 then
print("Article updated/replaced successfully")
end

Penggantian Sumber Daya Sepenuhnya

-- Replace an entire product with new data
local response = Request("https://api.example.com/products/456")
:setHeader("Content-Type", "application/json")
:setParameter("name", "Premium Widget")
:setParameter("description", "A high-quality widget with advanced features")
:setParameter("price", "99.99")
:setParameter("stock", "50")
:setParameter("category", "electronics")
:setParameter("specs", '{"color": "black", "weight": "200g", "warranty": "2 years"}')
:put()

local updatedProduct = response:getData()
print("Product replaced: " .. updatedProduct)

Catatan

  • Gunakan setParameter() untuk menambahkan data ke body permintaan sebelum memanggil put()
  • Permintaan PUT harus berisi representasi lengkap dari sumber daya, bukan hanya perubahannya
  • PUT berbeda dari PATCH di mana PUT menggantikan seluruh sumber daya, sedangkan PATCH melakukan pembaruan sebagian
  • Operasi PUT yang berhasil biasanya mengembalikan:
    • 200 OK dengan sumber daya yang diperbarui dalam body respons (untuk pembaruan)
    • 201 Created dengan sumber daya baru dalam body respons (untuk pembuatan)
    • 204 No Content jika operasi 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 PUT bersifat idempoten - melakukan permintaan yang sama berkali-kali seharusnya memberikan efek yang sama
  • Berhati-hatilah saat menggunakan permintaan PUT karena akan sepenuhnya menggantikan data yang ada