Request():put()
Выполняет PUT-запрос и возвращает объект Response. Этот метод используется для полной замены ресурса на сервере.
Сигнатура
put(): Response
Возвращаемое значение
Response — объект ответа, содержащий ответ сервера
Описание
Метод put() отправляет HTTP PUT-запрос на URL-адрес, указанный при создании объекта Request. PUT-запросы обычно используются для полной замены существующих ресурсов новыми данными или для создания ресурса по определённому URL-адресу.
Используйте setParameter(), чтобы добавить данные в тело запроса перед вызовом put().
Примеры
Базовый PUT-запрос
-- 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()
PUT-запрос с 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()
Обработка 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 для создания ресурса
-- 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
Условное PUT-обновление
-- 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
Полная замена ресурса
-- 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)
Примечания
- Используйте
setParameter(), чтобы добавить данные в тело запроса перед вызовомput() - PUT-запросы должны содержать полное представление ресурса, а не только изменения
- PUT отличается от PATCH тем, что PUT заменяет весь ресурс, тогда как PATCH выполняет частичные обновления
- Успешные операции PUT обычно возвращают:
200 OKс обновлённым ресурсом в теле ответа (для обновлений)201 Createdс новым ресурсом в теле ответа (для создания)204 No Content, если операция выполнена успешно, но тело ответа не требуется
- Метод возвращает объект Response, с помощью которого вы можете получить данные ответа и код состояния
- Всегда проверяйте код состояния ответа, чтобы убедиться в успешности запроса
- PUT-запросы являются идемпотентными — повторение одного и того же запроса несколько раз должно давать одинаковый результат
- Будьте осторожны при использовании PUT-запросов, так как они полностью заменяют существующие данные