[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-rest-api-v-chyom-raznitsa-mezhdu-put-i-patch":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},1115,"v-chyom-raznitsa-mezhdu-put-i-patch",34,"rest-api","REST API","🌐","В чём разница между PUT и PATCH?","PUT выполняет полную замену ресурса, а PATCH — частичное обновление. При PUT все не переданные поля будут сброшены, при PATCH — останутся без изменений.\n\n| Характеристика | PUT | PATCH |\n|---------------|-----|-------|\n| Тип обновления | Полная замена ресурса | Частичное обновление |\n| Тело запроса | Полное представление ресурса | Только изменяемые поля |\n| Идемпотентность | Да | Зависит от реализации |\n| Поведение для отсутствующих полей | Сбрасывает в значения по умолчанию \u002F null | Не затрагивает |\n\nПример. Исходный ресурс:\n```json\n{\n  \"id\": 42,\n  \"name\": \"Иван\",\n  \"email\": \"ivan@example.com\",\n  \"age\": 30\n}\n```\n\nPUT — замена целиком. Если поле не указано, оно будет сброшено:\n```\nPUT \u002Fapi\u002Fusers\u002F42\n{\"name\": \"Иван Петров\", \"email\": \"ivan@example.com\", \"age\": 31}\n```\nЕсли отправить только `{\"name\": \"Иван Петров\"}`, поля `email` и `age` станут `null`.\n\nPATCH — частичное обновление. Изменяются только переданные поля:\n```\nPATCH \u002Fapi\u002Fusers\u002F42\n{\"age\": 31}\n```\nПоля `name` и `email` останутся без изменений.\n\n\u003Cdetails>\u003Csummary>Пример реализации в Spring\u003C\u002Fsummary>\n\n```java\n\u002F\u002F PUT — полная замена\n@PutMapping(\"\u002Fusers\u002F{id}\")\npublic ResponseEntity\u003CUser> replaceUser(@PathVariable Long id,\n                                         @RequestBody User user) {\n    user.setId(id);\n    User saved = userService.save(user);\n    return ResponseEntity.ok(saved);\n}\n\n\u002F\u002F PATCH — частичное обновление\n@PatchMapping(\"\u002Fusers\u002F{id}\")\npublic ResponseEntity\u003CUser> updateUser(@PathVariable Long id,\n                                        @RequestBody Map\u003CString, Object> updates) {\n    User updated = userService.partialUpdate(id, updates);\n    return ResponseEntity.ok(updated);\n}\n```\n\n\u003C\u002Fdetails>\n\n> **На собеседовании:** важно показать понимание через пример с отсутствующими полями. Частая ошибка — не упомянуть, что PATCH может быть как идемпотентным, так и нет, в зависимости от семантики (установка значения vs инкремент).","","junior",[15],"rest",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":20,"featuredSnippetReady":23},"В чём разница между PUT и POST? — Gymterview","PUT и POST — два HTTP-метода для создания и обновления ресурсов, различающиеся семантикой, идемпотентностью и тем, кто определяет URI нового ресурса.","PUT и POST — два HTTP-метода для создания и обновления ресурсов, различающиеся семантикой, идемпотентностью и тем, кто о",[15,13],true]