7.6 블로그 글 수정/생성 기능 구현 - 2

SummerToday·2024년 2월 18일
1
post-thumbnail
post-custom-banner

생성 기능 구현

// resources - staic - js - article.js

  ~ 생략 ~

// 생성 기능
const createButton = document.getElementById('create-btn');

if (createButton) { 
    createButton.addEventListener('click', event => {
        fetch('/api/articles', {
            method: 'POST',
            headers: {
                "Content-Type": "application/json",
            },
            body: JSON.stringify({
                title: document.getElementById('title').value,
                content: document.getElementById('content').value
            })
        })
            .then(() => {
                alert('등록 완료되었습니다.');
                location.replace('/articles');
            });
    });
}
  • 클릭 이벤트 발생 시 id가 title, content인 입력 값을 추출하여 fetch 메서드를 통해 API로 /api/articles/POST 요청을 보낸다.

블로그 글 목록 뷰 수정

// resources - templates - articleList.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>블로그 글 목록</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
</head>
<body>
<div class="p-5 mb-5 text-center</> bg-light">
    <h1 class="mb-3">My Blog</h1>
    <h4 class="mb-3">블로그에 오신 것을 환영합니다.</h4>
</div>

<div class="container">

<!-- 해당 부분 수정 -->
    <button type="button" id="create-btn"
            th:onclick="|location.href='@{/new-article}'|"
            class="btn btn-secondary btn-sm mb-3">글 등록</button>
<!-- 해당 부분 수정 -->

    <div class="row-6" th:each="item : ${articles}">
        <div class="card">
            <div class="card-header" th:text="${item.id}">
            </div> 
            <div class="card-body">
                <h5 class="card-title" th:text="${item.title}"></h5>
                <p class="card-text" th:text="${item.content}"></p>
                <a th:href="@{/articles/{id}(id=${item.id})}" class="btn btn-primary">보러가기</a> <!--블로그 글 상세화면 바로가기-->
            </div>
        </div>
        <br>
    </div>
</div>

<script src="/js/article.js"></script> <!--article.js가 이 화면에서 동작하도록 import-->
</body>
  • id가 create-btn인 글 등록 버튼(생성 버튼)을 추가해준다.



해당 글은 다음 도서의 내용을 정리하고 참고한 글임을 밝힙니다.
신선영, ⌜스프링 부트 3 벡엔드 개발자 되기 - 자바 편⌟, 골든래빗(주), 2023, 384쪽
profile
IT, 개발 관련 정보들을 기록하는 장소입니다.
post-custom-banner

0개의 댓글