728x90
반응형
1. HTTP DELETE Method
@DeleteMapping("/users/{id}")
public void deleteUser(@PathVariable int id){
User user = service.deleteById(id);
if(user==null){
throw new UserNotFoundException(String.format("ID[%s] not found", id));
}
}
2. HTTP POST Method (데이터 생성)
// 새로운 사용자를 등록하는 method 구현
@PostMapping("/users")
public ResponseEntity<User> createUser(@Valid @RequestBody User user){
User savedUser = service.save(user);
// 사용자에게 요청 값을 변환해주기
// fromCurrentRequest() :현재 요청되어진 request값을 사용한다는 뜻
// path : 반환 시켜줄 값
// savedUser.getId() : {id} 가변변수에 새롭게 만들어진 id값 저장
// toUri() : URI형태로 변환
URI location = ServletUriComponentsBuilder.fromCurrentRequest()
.path("/{id}")
.buildAndExpand(savedUser.getId())
.toUri();
return ResponseEntity.created(location).build();
}
User doamin class에서 id(Primary key)값을 자동으로 생성되는 sequence로 설정해놓음
create sequence hibernate_sequence start with 1 increment by 1
이전에 이미 1번데이터가 저장되있는 상태이기때문에 sequence를 통해 "id=1" 값이 추가되면 오류 발생
-> 초기데이터값을 JPA와 상관없이 등록시켰기때문에 오류 발생, 임의의 데이터(큰 값)로 수정해놓기
-- data.sql
insert into user values(99991,sysdate(),'User1','test1111','750411-111111');
insert into user values(99992,sysdate(),'User2','test2222','850411-111111');
insert into user values(99993,sysdate(),'User3','test3333','950411-111111');
Header값을 조회하면 지금 추가한 데이터를 조회(사용)하기위해
어떤 key값을 사용해야하는지 알려줌 (http://localhost:8088/jpa/users1)
-> ResponseEntity 사용했기 때문에
728x90
반응형