REST API와 마무리 — 실습
myreply 테이블을 FK 로 myboard 와 연결하고, ReplyApiController 를 만들어 fetch 로 비동기 등록·조회. 응답 JSON 을 DOM 에 직접 추가.
-- DB: 새 테이블 + FK
CREATE TABLE myreply (
num INT PRIMARY KEY AUTO_INCREMENT,
content VARCHAR(500) NOT NULL,
boardnum INT NOT NULL,
writer VARCHAR(50) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (boardnum) REFERENCES myboard(num) ON DELETE CASCADE
);
// 도메인 (com.smhrd.domain)
@Data @AllArgsConstructor @NoArgsConstructor
public class Reply {
private int num;
private String content;
private int boardnum;
private String writer;
private LocalDateTime createdAt;
}
// 서버 (com.smhrd.controller)
@RestController @RequestMapping("/api/replies")
public class ReplyApiController {
@GetMapping
public List<Reply> list(@RequestParam int boardnum) {
return service.list(boardnum);
}
@PostMapping
public Reply add(@RequestBody Reply r, HttpSession s) {
Member u = (Member) s.getAttribute("loginUser");
r.setWriter(u.getId());
return service.add(r);
}
}
// 클라이언트 JS
async function addReply(boardnum, content) {
const res = await fetch('/api/replies', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({boardnum, content})
});
const newReply = await res.json();
document.querySelector('#replyList').innerHTML += `
<div>${newReply.writer}: ${newReply.content}</div>
`;
}
Run on Server 또는 javac+java 로 실행하고 결과를 확인합니다.