Яка різниця між @RequestParam і @RequestBody?

admin | 4 Квітня, 2025


@RequestBody використовується для вилучення даних тіла запиту HTTP, часто у форматі JSON або XML, і десеріалізації в об’єкт Java. @RequestParam використовується для отримання окремих значень параметрів із URL-адреси запиту або надісланих даних форми.11 червня 2023 р.

напр. http://example.com/api/data?id=123 , id=123 — це параметр із ідентифікатором ключа та значенням 123 . Тіло — це фактичне тіло запиту (зазвичай він визначає корисне навантаження запиту або дані, які потрібно обробити запитом).

Використовуючи анотацію @RequestBody, ви отримаєте зіставлення ваших значень із моделлю, яку ви створили у своїй системі для обробки будь-якого конкретного виклику. Хоча за допомогою @ResponseBody ви можете надіслати будь-що назад до місця, звідки було згенеровано запит. Обидві речі будуть легко зіставлені без написання спеціального аналізатора тощо.

Що таке @RequestParam? Використовується анотація @RequestParam у Spring MVC щоб отримати параметри запиту з URL-адреси запиту. Параметри запиту зазвичай додаються до URL-адреси після знака питання (?) і розділяються амперсандом (&).

Основна відмінність полягає в тому, що коли аргумент методу не є String або raw MultipartFile / Part , @RequestParam покладається на перетворення типу через зареєстрований конвертер або PropertyEditor, тоді як RequestPart покладається на HttpMessageConverters, беручи до уваги заголовок Content-Type частини запиту .

@RequestBody використовується для вилучення даних тіла запиту HTTP, часто у форматі JSON або XML, і десеріалізації в об’єкт Java. @RequestParam використовується для отримання окремих значень параметрів із URL-адреси запиту або надісланих даних форми.

Використовуйте вимогу params, якщо у вас є динамічні сегменти у ваших схемах маршруту, потр. query, коли ви хочете отримати дані з рядка запиту, і req. тіло для даних, надісланих у тілі запиту.