본문 바로가기
Java/Spring

Spring) Rest API - POST

by 박채니 2022. 9. 7.
안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.

 

POST


Controller

DevRestController

 

@RequestBody

- 요청 메세지의 json데이터를 MessageConverter에 의해 java로 변환

@PostMapping
public ResponseEntity<?> dev(@RequestBody Dev dev) {
    log.debug("dev = {}", dev);
    return null;
}

@콘솔출력값
DEBUG: com.ce.spring2.demo.controller.DevRestController - dev = Dev(no=0, name=홍길동그랑땡, career=3, email=hongdong@gmail.com, gender=F, lang=[C, Python], createdAt=null)

json으로 넘겨주었지만 @RequestBody에 의해서 자바 객체로 잘 변환된 것을 확인할 수 있습니다.

 

insert처리

@PostMapping
public ResponseEntity<?> dev(@RequestBody Dev dev) {
    log.debug("dev = {}", dev);
    int result = demoService.insertDev(dev);
    Dev savedDev = demoService.selectOneDev(dev.getNo());

    return ResponseEntity.status(HttpStatus.CREATED).body(savedDev);
}

 

demo-mapper.xml

<insert id="insertDev">
    insert into dev values(seq_dev_no.nextval, #{name}, #{career}, #{email}, #{gender}, #{lang}, default)

    <selectKey order="AFTER" resultType="_int" keyProperty="no">select seq_dev_no.currval from dual</selectKey>
</insert>

selectKey를 이용하여 현재 추가된 시퀀스 번호(마지막 발급 번호)를 가져와 no 컬럼에 set 시켜주었습니다.

따라서 저장된 Dev 정보를 다시 no로 가져올 수 있는 것이죠.

 

HttpStatus.CREATED는 insert 등에 의해 성공적으로 처리 되었을 때 201을 반환해줍니다.

201번이 반환된 것을 확인할 수 있으며, 추가되었던 Dev를 다시 리턴 받았습니다. (no, createdAt 컬럼 추가됨!)