윤개발

Vue.js + Spring Boot + MySQL+JPA 게시판 만들기(5) - 백엔드API 구조 알아보기 본문

프로젝트/Vue.js, Spring 게시판

Vue.js + Spring Boot + MySQL+JPA 게시판 만들기(5) - 백엔드API 구조 알아보기

DEV_SJ 2020. 10. 9. 23:35

이번 포스트에서는 백엔드 API의 구조를 알아보도록 하겠습니다.

 

간단한 게시판 만들기이지만 실제 사용하는 백엔드 API 구조를 설계하였습니다.

 

 

먼저 객체 정보를 알아보겠습니다. 각각은 모두 클래스 들이며 아래와 같이 사용할 예정입니다.

번호 이름 설명
1 Json 프론트와 백엔드 api는 JSON 형식으로 통신합니다.
2 Spring Security JWT 인증을 적용하여 인증 & 권한을 확인합니다.
3 DTO(Data Transfer Object) JSON으로 입력된 데이터를 JAVA 객체로 변경하고 유효성 체크를 합니다.
4 Controller 요청이 들어온 API 에서 어떤 동작을 할지 결정하고 리턴합니다.
5 Service 컨트롤러에서 받은 요청을 처리합니다. (비지니스 로직)
6 Domain JPA의 Entity입니다. DB의 컬럼과 일치합니다.
7 Repository Spring data jpa를 사용하여 DB에 접근하는 인터페이스입니다.
8 MySQL 데이터베이스
9 JsonResponse 컨트롤러에서 정상 응답시에 반환할 규격입니다. (정상코드, 데이터 등)
10 ExceptionHandler 컨트롤러, 서비스 레포지토리단에서 발생한 에러는 이곳으로 보내집니다. 
11 JsonErrorResponse 비지니스 에러, 서비스 에러등을 반환할 규격입니다. (에러코드, 에러메시지 등)

 

다음은 진행되는 순서입니다.

번호 이름 설명
1 프론트<->백엔드 호출 RESTful로 프론트에서 백엔드를 호출합니다. 이때 json 으로 data를 넘깁니다.
2 인증 & 권한 요청을 한 유저가 해당 요청에 대한 권한이 있는지를 체크합니다.
3 JSON -> DTO data를 객체에 옮겨 담으면서 유효성(길이, 형식등)을 체크합니다.
4 컨트롤러 요청 처리 요청에 따라 컨트롤러에서 어떤 동작을 할지 결정합니다.
5 서비스 로직 처리 동작에 따른 서버단의 로직을 처리합니다.
6 DB 정보 요청 DB에 접근해야할 경우 Repository를 통해 결과를 받습니다.
7 DB 접근 DB에서 CRUD의 결과값을 넘겨줍니다.
8 정상 리턴 정상적인 경로라면 백엔드에서 프론트로 결과값을 넘겨줍니다.
9 요청값 반환 리턴한 값을 JSON 형태로 만들어 리턴합니다.
예외 에러 리턴 사용자의 실수, 서버의 오류등으로 인해 요청이 실패한 경우 에러를 리턴합니다.

 

이상으로 백엔드 API에  사용될 객체와 순서를 알아보았습니다.

 

다음 포스팅에서는 실제 코드를 작성해보며 API 개발을 진행해보겠습니다.

 

해당 코드는 아래 링크에서 확인할 수 있습니다.

https://github.com/sungjaeyoon/board

 

sungjaeyoon/board

블로그에 포스팅중인 게시판 만들기입니다. Contribute to sungjaeyoon/board development by creating an account on GitHub.

github.com

 

Comments