RestAPI 컨트롤러 요청과 응답

coding S's avatar
Mar 24, 2024
RestAPI 컨트롤러 요청과 응답

1. 요청은 JSON으로 통일

 

2. 응답도 JSON으로 통일

 

3. Post, Put 요청은 추가된 row 혹은 수정된 row를 응답(return) 해줘야 한다.

내가 서버한테 회원가입(insert)요청을 하면, username, password가 insert 들어가서 row가 하나 추가되잖아? 그걸 그대로 응답해줘야한다. 만약 댓글이 post요청이 들어오면 insert된 댓글을 응답해줘야 한다. 그래야지 애가 그걸로 pk를 알 수 있다. 그래야 앱쪽에서 CSR을 하고, 삭제 버튼을 눌렀을 때 삭제가 가능한 것! ApiUtil에 200, ok 라고만 오면 프런트가 insert된 데이터의 형태를 보지 못한다! 그래서 insert된 row를 같이 주는게 좋다 업데이트도 마찬가지. 응답을 200 , ok만 주면 프런트 쪽에서는 진짜 수정이 된건지 모르기 때문에 수정된 row도 같이 주는게 좋다. 그러나! 패스워드는 예민한거니까 주면 안된다. 개인정보들은 빼고 줘야함. 그래서,
 

4. 화면에 필요한 데이터만 전달해준다.

응답 DTO 필요. (Entity는 필요없는 정보가 들어있기 때문에 xxx)
 

[ DTO를 만들 책임은 서비스한테 있다 ]

WHY 서비스? 왜 스프링에서는 JPA를 쓸 때 서비스에서 DTO를 만드는게 좋을까? JPA는 요청을 하면 한방 쿼리를 안 짤 때도 많다. (필요하면 LAZY LOADING을 땡겨서 하기도 하니까) OPEN-IN-VIEW가 TRUE 일 때의 단점과 관련있다. (링크) DB데이터가 필요 없을때 커넥션을 끊어버리면 다른 사람이 커넥션을 쓸 수 있으니, (서비스에서 커넥션이 종료되니까) 서비스에서 종료되게 커넥션 시간이 줄이는게 좋다.
💡
결론! 커넥션 시간을 줄이기 위해서! OPEN-IN-VIEW를 끄고 서비스에서 DTO 처리를 하는 것!
 
Share article

codingb