윤개발
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
'프로젝트 > Vue.js, Spring 게시판' 카테고리의 다른 글
Vue.js + Spring Boot + MySQL+JPA 게시판 만들기(7) - 회원가입 API 생성 (16) | 2020.11.15 |
---|---|
Vue.js + Spring Boot + MySQL+JPA 게시판 만들기(6) - 백엔드API Domain 생성 (2) | 2020.10.25 |
Vue.js + Spring Boot + MySQL+JPA 게시판 만들기(4) - Intelij 설정 (4) | 2020.10.04 |
Vue.js + Spring Boot + MySQL+JPA 게시판 만들기(3) - 프론트 생성 (1) | 2020.07.29 |
Vue.js + Spring Boot + MySQL+JPA 게시판 만들기(2) - 백엔드 프로젝트 생성 (0) | 2020.07.29 |
Comments