:::: МЕНЮ ::::

Шаг второй: Работа с REST через Spring Boot

Для создания обычного Action, Endpoint, URL — отдельной страницы потребуется публичный метод в любом контроллере спринга с одной из следующих аннотацией :

  • @GetMapping
  • @PostMapping
  • @DeleteMapping
  • @PutMapping
  • @RequestMapping
  • и др.

@GetMapping в контроллерах spring

Вообще первая сложность у меня возникла не с REST контроллерами, а настройками ответов для авторизованных не авторизованных пользователей.

Что делать с этим я не знал, пока не исследовал spring security

// Думаю здесь можно обойтись без комментариев
@GetMapping(path = "/current-user/detail")
public ResponseEntity<UserModel> getDetailInfoCurrentUser() {
    return ok(new UserModel(sessionManager.getUser()));
}




@PostMapping в контроллерах spring

@PostMapping(path="/api/current-user/update-password", consumes = "application/json")
public Boolean currentUserUpdatePassword(@RequestBody UserDto userDto) {
    UserEntity userEntityDb = userService.getById(sessionManager.getUser().getId());
    userService.update(userEntityDb.getId(), userEntityDb);
    return true;
}

@DeleteMapping в контроллерах spring

@DeleteMapping(path="/api/users/delete/{id}")
public int deleteUserById(@PathVariable("id") UUID id) {    
    return userService.deleteById(id);
}

Редирект в spring boot

Для реализации редиректа в аннотированных методах rest контроллеров, необходимо передать дополнительным параметром HttpServletResponse, в нём мы и установим наши необходимые параметры.

@GetMapping(path="/api/redirect/{id}")
public void redirectUserById(@PathVariable("id") UUID id, HttpServletResponse httpServletResponse) {    
        String urlRedirect = "/api/task/" + id;
        httpServletResponse.setHeader("Location", urlRedirect);
        httpServletResponse.setStatus(302);
}


Оставить комментарий