Sobes.tech
Junior — Middle
61

Каким образом контроллер определяет, какой метод обработать в зависимости от HTTP-запроса?

Answer from AI

sobes.tech AI

В Java веб-фреймворках (например, Spring MVC) контроллеры используют аннотации для сопоставления HTTP-запросов с методами.

Основной механизм:

  • Аннотация, например, @GetMapping, @PostMapping или @RequestMapping, указывает путь и HTTP-метод.
  • При поступлении запроса фреймворк анализирует URL и HTTP-метод.
  • Находит метод контроллера с подходящей аннотацией, соответствующей пути и методу запроса.
  • Вызывает этот метод для обработки запроса.

Пример:

@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    public User getUser(@PathVariable String id) {
        // обработка GET /users/{id}
        return userService.findById(id);
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        // обработка POST /users
        return userService.save(user);
    }
}

Здесь при GET-запросе на /users/123 вызовется метод getUser, а при POST на /userscreateUser. Фреймворк сам разбирает HTTP-запрос и определяет нужный метод.