요즘은 최종 프로젝트의 프론트 부분을 수정 보완하는데 하루를 거의 다 쓰고 있다. 기존에 백엔드와 연동되는 것은 거의 확인하여서 UI등을 조금 더 보기좋게 만들어 보고 있다.
GET은 요청하는 데이터가 HTTP URL의 일부로 포함되어 전송됩니다. 일반적으로 조회 작업에 사용됩니다.
사용자가 브라우저에서 URL을 입력하거나 링크를 클릭합니다.
브라우저가 해당 URL에 포함된 파라미터와 함께 서버에 요청을 보냅니다.
서버가 요청을 처리하고 필요한 정보를 응답으로 보냅니다.
브라우저가 응답을 받아 사용자에게 표시합니다.
POST는 요청 데이터를 HTTP 메시지 본문에 담아 전송하며, 서버의 상태를 변경하거나 데이터를 추가하는 작업에 사용됩니다.
사용자가 웹 폼에 데이터를 입력하고 제출 버튼을 클릭합니다.
브라우저가 데이터를 HTTP 본문에 담아 서버에 요청을 전송합니다.
서버가 요청을 처리하고, 결과를 확인하거나 필요한 정보를 응답으로 보냅니다.
브라우저가 응답을 받아 사용자에게 표시하거나 다른 동작을 수행합니다.
GET은 주로 데이터 조회에 사용되며, URL에 파라미터를 포함합니다.
POST는 데이터를 생성하거나 변경하는 데 사용되며, HTTP 본문에 데이터를 포함합니다.
두 방식 모두 클라이언트에서 서버로 요청을 보내고 응답을 받는 과정을 거칩니다. 하지만 데이터의 위치와 사용 목적이 다릅니다.
출처: https://turtledeveloper.tistory.com/38 [turtleDeveloper:티스토리]

위 화면처럼 스포츠 종목별로 공모양 이미지를 넣어주고 정원 및 지역 정보를 보기좋게 처리했다.
게시글의 스포츠 목록별로 이미지를 다르게 가져오는데 이와 관련된 코드는 다음과 같다.
<img th:if="${board.boardSport eq '축구'}" th:src="@{/image/sports/축구공.png}" alt="Soccer" width="50">
<img th:if="${board.boardSport eq '풋살'}" th:src="@{/image/sports/축구공.png}" alt="Football" width="50">
<img th:if="${board.boardSport eq '농구'}" th:src="@{/image/sports/농구공.png}" alt="Basketball" width="50">
<img th:if="${board.boardSport eq '야구'}" th:src="@{/image/sports/야구공.png}" alt="Baseball" width="50">
이를 위해서 게시글을 생성할 때 스포츠 종류를 직접 작성하는 것이 아닌 선택을 하여 입력하도록 수정하였다.
<label for="boardSport">Sport:</label>
<select id="boardSport" name="boardSport" required>
<option value="축구">축구</option>
<option value="축구">풋살</option>
<option value="야구">야구</option>
<option value="농구">농구</option>
</select>

또한 다른 사이트들을 보니 수정/삭제를 버튼보다 텍스트 형식으로 두는 곳이 많아서 이를 따라서 텍스트 형식으로 처리해주었다.
현재 게시판에 참여한 사람 목록은 참여자 확인 버튼을 누르면 볼 수 있고 다시 누르면 보이지 않도록 해주었다.

<!--board.html-->
<p class="attendance" onclick="toggleAttendance()">참여자 확인</p>
<div class="attendanceCheck" id="attendanceCheck">
<ul class="list-group">
<li class="list-group-item" th:each="userNickname : ${boardResponseDto.userNickNameList}"
th:text="${userNickname}"></li>
</ul>
</div>
<script>
let isAttendanceCheckVisible = false;
function toggleAttendance() {
const attendanceCheckElement = document.getElementById("attendanceCheck");
// 번갈아가면서 가시성을 변경
isAttendanceCheckVisible = !isAttendanceCheckVisible;
if (isAttendanceCheckVisible) {
attendanceCheckElement.classList.add("show");
} else {
attendanceCheckElement.classList.remove("show");
}
}
</script>
이렇게 전반적으로 편의성과 관련된 부분을 작업해 주었다.


내일은 리팩토링부터 해주고 페이징을 구현해보는 것을 목표로 해야겠다. 그리고 백엔드쪽에서도 더 추가할 기능이 있을지 생각해보아야겠다.