API와 블로그 실습

풀떼기·2023년 11월 9일

SpringBootLearn

목록 보기
4/8

API와 REST API

  • API : 프로그램 간에 상호작용하기 위한 매개체
  • REST API : REpresentational State Transfer API
    자원을 이름으로 구분해 자원의 상태를 주고받는 API 방식

REST API

  • 특징 : 서버/클라이언트 구조, 무상태, 캐시 처리 가능, 계층화, 인터페이스 일관성
  • 장점 : URL만 보고도 무슨 행동을 하는 API인지 명확하게 알 수 있다
    상태가 없다는 특징이 있어 클라이언트와 서버의 역할이 명확하게 분리된다
    HTTP 표준을 사용하는 모든 플랫폼에서 사용 가능하다
  • 단점 : HTTP 메서드(GET, POST와 같은 방식)의 개수에 제한이 있다
    설계를 하기 위해 공식적으로 제공되는 표준 규약이 없다

블로그 설계

교재를 따라 블로그 CRUD 서비스와 컨트롤러 등, 필요한 기능들을 만들었다.
템플릿은 thymeleaf를 사용한다. 과거 프로젝트는 intelliJ에서 지원하는 mustache를 사용했었는데, 스프링부트에서 thymeleaf를 권장해 사용해보기로 했다.
⬇ 아래는 실습을 진행한 깃헙 링크다.
https://github.com/Kimhy-git/springboot-learn.git

ajax와 fetch

ajax와 jquery를 동시에 쓰는 간편함에 빠져있다가 fetch와 axios를 알게 되었다. 책 학습을 끝내고 개인 프로젝트를 진행하면서 어떤 방식을 쓸지 고민된다.
(추가 : vanilla js와 axios를 쓸 예정이다.)

오류

글 생성/수정 뷰를 작성하던 중 오류가 생겼다.
화면상 같은 레이아웃을 공유하고 있어, 글 등록/수정 버튼을 다음과 같이 thymeleaf의 if문법을 이용해 작성 중이었다.

<button th:if="${article.id} != null" type="button" id="modify-btn" class="btn btn-primary btn-sm">수정</button>
<button th:if="${article.id} == null" type="button" id="create-btn" class="btn btn-primary btn-sm">등록</button>

그런데 글 생성 뷰에서 계속 수정 버튼이 나오고 있었다. 확인해보니 article.id가 null이 아닌 0으로 받아지는 것이다.
null을 0으로 수정하여 작동은 올바르게 되었지만, 찝찝함이 남아 있다.

테스트 코드를 작성해본 결과 기본생성자를 호출할 때부터 0으로 생성되는듯 했다.
생각해보면 long 자료형 변수라 0이 할당되어도 이상하지 않다. 교재에서 안내한 null 코드는 어떻게 작동된걸까?

profile
주니어 백엔드 개발자입니다.

0개의 댓글