게시판 만들기(스프링 부트3, 나도코딩 스터디)/17장. 웹 페이지에서 댓글 등록하기
17.1~17.3 웹 페이지에서 댓글 등록하기(게시판 만들기 / 길벗 코딩 자율학습단)
coding232624
2023. 12. 13. 16:28
댓글 등록하기
- 댓글 생성 뷰 페이지(_new.mustache)에 댓글 입력 폼 만들기
- [댓글 작성] 버튼을 클릭해 REST API 요청 보내기
버튼 변수화
- 버튼 같은 문서 내 특정 요소를 변수로 받아 오려면 다음과 같이 querySelector() 메서드를 사용해 해당 요소를 선택한 후 변수에 저장
// 형식
자료형 변수명 = document.querySelector("#id_값);
// 예시
nickname: document.querySelector("#new-comment-nickname");
버튼 이벤트 감지
- 클릭, 마우스 오버 같이 웹 페이지에서 발생한 특정 이벤트는 addEventListener() 메서드를 사용해 감지
// 형식 , 이벤트가 감지되면 이벤트 처리 함수를 실행
요소명.addEventListener("이벤트_타입", 이벤트_처리_함수)
// 예시
commentCreateBtn.addEventListener("click", function())
댓글 객체 생성
- 댓글 객체를 자바스크립트로 만드는 3가지 방법
- 객체 리터럴 방식 ( 선택 방법 )
- 생성자 함수 방식
- Object.create() 방식
객체 리터럴 방식
// 형식
var object = {
key1: value1,
key2: value2,
...
}
// 예시
// 새 댓글 객체 생성
const comment = {
// 새 댓글의 닉네임
nickname: document.querySelector("#new-comment-nickname").value,
// 새 댓글의 본문
body: document.querySelector("#new-comment-body").value,
// 부모 게시글의 id
articleId: document.querySelector("#new-comment-article-id").value
};
REST API 호출과 응답 처리
- 자바스크립트로 REST API 요청을 보낼 때 fetch() 함수 사용
- 전송 데이터가 자바스크립트 객체이므로 JSON 문자열로 변환해 보냄
POST 요청을 보낼 때 형식
// 형식
fetch('API_주소', {
method: 'POST', //요청 메서드(GET, POST, PATCH, DELETE)
header: {
"Content-Type": "application/json"
},
body: JSON.stringify(객체) //전송 데이터
}).then(response => {
응답_처리문;
});
// 예시
fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(comment) // comment 객체를 JSON 문자열로 변환해 전송
}).then(response => {
//HTTP 응답 코드에 따른 메시지 출력
const msg = (response.ok) ? "댓글이 등록됐습니다." : "댓글 등록 실패..!";
alert(msg);
// 현재 페이지 새로 고침
window.location.reload();
});