[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-spring-dlya-chego-nuzhny-requestparam-pathvariable-requestbody-i-responsebody":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":15,"progress":16,"seo":17},643,"dlya-chego-nuzhny-requestparam-pathvariable-requestbody-i-responsebody",14,"spring","Spring","🌱","Для чего нужны @RequestParam, @PathVariable, @RequestBody и @ResponseBody?","Эти аннотации определяют, откуда Spring извлекает данные запроса и куда помещает данные ответа.\n\n| Аннотация | Откуда берёт данные | Пример URL |\n|-----------|---------------------|------------|\n| @PathVariable | Из URL-пути | `\u002Fapi\u002Fusers\u002F42` |\n| @RequestParam | Из query-параметров | `\u002Fapi\u002Fusers?status=ACTIVE` |\n| @RequestBody | Из тела запроса (JSON) | POST с JSON body |\n| @ResponseBody | В тело ответа (JSON) | Автоматически в @RestController |\n\n```java\n@PutMapping(\"\u002Fapi\u002Fdepartments\u002F{deptId}\u002Fusers\u002F{userId}\")\npublic ResponseEntity\u003CUserDto> updateUser(\n        @PathVariable Long deptId,\n        @PathVariable Long userId,\n        @RequestParam(required = false) boolean notify,\n        @RequestBody @Valid UpdateUserRequest request) {\n    \u002F\u002F ...\n}\n```\n\n```java\n\u002F\u002F GET \u002Fapi\u002Fusers?status=ACTIVE&page=0&size=20\n@GetMapping(\"\u002Fapi\u002Fusers\")\npublic Page\u003CUserDto> findUsers(\n        @RequestParam String status,\n        @RequestParam(defaultValue = \"0\") int page,\n        @RequestParam(defaultValue = \"20\") int size,\n        @RequestParam(required = false) String search) { }\n```\n\n> **На собеседовании:** покажите умение комбинировать эти аннотации. Частая ошибка -- забыть `@RequestBody` для POST\u002FPUT (параметр будет null) или отправлять form-data вместо JSON.","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":19,"keywords":20,"schemaAnswer":19,"featuredSnippetReady":21},"Для чего нужны @RequestParam, @PathVariable, @RequestBody и  — Gymterview","Эти аннотации определяют, откуда Spring извлекает данные запроса и куда помещает данные ответа.",[7,13],true]