helloworld
PUT 본문
httpmethod의 기능중 마지막 기능일것 같다
put은 데이터베이스내에서의 update기능과 같다.
강의 챕터가 끝나면서 과제로 putMapping을 하라고 하셨다.
우선
static {
users.add(new User(1, "Song", new Date()));
users.add(new User(2, "Woo", new Date()));
users.add(new User(3, "ChimChakMan", new Date()));
}
list로 간단하게 코드예제를 만들면서 하고 있었기 때문에 이런 코드가 있다.
우선 유저목록의 id값을 가변변수로 받고
id값을 user 객체에 set 한 뒤 수정을 하려 했었다.
public ResponseEntity<User> updateUser(@RequestBody User user,@PathVariable int id) {
user.setId(id);
User user1 = service.updateUser(user);
if (user == null) {
throw new RuntimeException(String.format("ID[$s] not found", id));
}
URI location = ServletUriComponentsBuilder.fromCurrentRequest()
.path("{id}")
.buildAndExpand(user1)
.toUri();
return ResponseEntity.created(location).build();
}
*참고 : if문은 id가 존재하지 않을때에 예외처리하는 코드이고 uri는 http 상태코드를 바꾼 코드이다.
아 근데 예외처리가 안되네 아 ㅋㅋ 다시 해봐야지
뭐 아무튼
for (User user1 : users) {
if (user.getId() == user1.getId()) {
user1.setId(user.getId());
user1.setName(user.getName());
user1.setJoinDate(user.getJoinDate());
}
}
return user;
}
이런식으로 업데이트를 하려 했는데 이건 아닌가보다 .. 왜냐면
http://localhost:9090/users/5User(id=1,%20name=new,%20joinDate=Sun%20Aug
%2013%2016:50:15%20KST%202023)
headers에 확인을 해보니 이런식으로 쿼리스트링식으로 넘어간다 ..
다시 찾아보자 아자아자 홧팅
-----------------------------------------------------
제대로 된 해결법인지는 의문이지만 해결 된거같다..
public ResponseEntity<User> updateUser(@RequestBody User user,@PathVariable int id) {
User updateUser = service.updateUser(user,id);
if (user.getId() != id) {
throw new UserNotFoundException(String.format("ID[%s] not found", id));
}
URI location = ServletUriComponentsBuilder.fromCurrentRequest()
// .path("/{id}")
.buildAndExpand(updateUser.getId())
.toUri();
System.out.println(location);
return ResponseEntity.created(location).build();
}
우선 에러코드가 나지 않았던 이유는 역시 조건을 바보같이 걸었다.. 수정할 id값과 요청시 들어가있는 id값을 비교해서 같지 않으면 에러코드를 나오게 하였다.
uri가 이상하게 나왔던 이유는 buildAndExpand였다. 우선 이미 엔드포인트가 users/{id}인데 그 위에 user를 넣으려 하니, users/2/~~~~~나왔던것이었다. 심지어 id값을 빼지도 않고 그냥 user를 박았었으니..
path를 주석처리하고 expand하여 id값을 집어 넣었더니 잘 됐다


만약 없는 번호를 넣거나 수정하려 할때에는 404 notFound 에러가 나온다

'restful' 카테고리의 다른 글
| JSON 형태의 데이터를 xml 데이터로 변환하기 (0) | 2023.08.13 |
|---|---|
| 유효성 검사 (Validatation) (0) | 2023.08.13 |
| DELETE 기능 (0) | 2023.08.13 |
| Exception 처리 심화과정 .. (0) | 2023.08.13 |
| Exception 처리 (0) | 2023.08.13 |