작성
·
2K
0
return ResponseEntity.created(URI.create("/Member/"+id)).build();
이렇게 코드 이동을 시켰느데 Header에 Location의 경로에는 이동하고 싶은 URI가 있지만 화면은 빈 화면을 보여줍니다. 어떻게 이동할 수 있나요??
선생님께서 작성하신대로해도 Header의 Location의 경로은 저렇게 있지만 실행하면 빈 화면만나옵니다. 원하는 메시지와 함께 이동을 원할 시 어떻게 해야 할까요?
답변 1
1
안녕하세요, 이도원입니다.
해당 요청에 대해 응답값으로 전달된 내용을 토대로, 특정 페이지로 이동하려고 한다면, Controller(서버) 쪽에서 직접 이동을 하던가, 프론트에서 처리해 줘야 합니다. 저희는 프론트에 대한 내용 없이 Controller에서만 처리하고 있기 때문에, ResponseEntity로 반환하지 말고, 특정 페이지를 다시 호출하시거나, ResponseEntity의 Header에 이동되고자 하는 URI를 명시하시면 됩니다. 강의에서 사용한 Location만으로는 해당 주소로 이동되지 않고, 단순히 보여주는 정보로만 사용된다고 보시면 됩니다. 아래 코드를 참보하셔서 작업해 보세요.
@GetMapping("/users/{id}")
public ResponseEntity<User> getStudent(@PathVariable int id) {
Optional<User> userOptional = userRepository.findById(id);
if (!userOptional.isPresent())
return ResponseEntity.notFound().build();
User user = userOptional.get();
return ResponseEntity.ok(user);
}
@PostMapping("/users")
public ResponseEntity<User> createUser(@Valid @RequestBody User user) {
User savedUser = userRepository.save(user);
URI location = ServletUriComponentsBuilder
.fromCurrentRequest()
.path("/{id}")
.buildAndExpand(savedUser.getId())
.toUri();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setLocation(location);
return new ResponseEntity<>(httpHeaders, HttpStatus.SEE_OTHER);
}
감사합니다.