[Spring Boot] AJAX 통신 시 데이터를 통일된 방식으로 반환하기

2023. 6. 1. 12:17·Java/Spring Boot
728x90
728x90

사전 준비

#  ResponseDto 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ResponseDto<T> {
 
    private int statusCode;
    private int code;
    private String message;
    private String resultCode;
    private T data;
    
}
cs

 

  - statusCode : HTTP 상태 코드 값

  - code : 성공 시 1, 실패 시 -1

  - resultCode : 성공 시 "success", 실패 시 "fail"

     → code 또는 resultCode를 사용해서 script단에서 if 문으로 코드를 나눌 수 있음

  - messge : alert 창에 사용할 메시지

  - data : 반환할 데이터

 

#  code, resultCode는 static 상수로 선언해서 사용

1
2
3
4
5
public final static String RESULT_CODE_SUCCESS = "success";
public final static String RESULT_CODE_FAIL = "fail";
    
public final static int CODE_SUCCESS = 1;
public final static int CODE_FAIL = -1;
cs

 

 

반응형
728x90

예시 코드

#  요청을 받은 Controller에서 데이터 반환

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    @PostMapping("/checkDate")
    @ResponseBody
    public ResponseDto<Boolean> checkDateProc(@RequestBody ScheduleDateCheckDto scheduleDto) {
        
        Integer statusCode = HttpStatus.OK.value();
        String message = "정상적인 선택입니다.";
        
        // code 또는 resultCode를 사용해서 script단에서 실행코드를 나눌 수 있음
        // 예시 : if (code == 1) { 성공 시 코드 } else if (code == -1) { 실패 시 코드 }
        int code = Define.CODE_SUCCESS;
        String resultCode = Define.RESULT_CODE_SUCCESS;
        Boolean data = false;
        
        ScheduleInfoResponseDto sch1 = scheduleService.readInfoDtoByScheduleId(scheduleDto.getScheduleId1());
        ScheduleInfoResponseDto sch2 = scheduleService.readInfoDtoByScheduleId(scheduleDto.getScheduleId2());
        
        // 스케줄1의 출발시간이 스케줄2의 출발시간보다 늦다면
        // 즉, 스케줄2가 스케줄1보다 먼저라면
        if (sch1.getDepartureDate().after(sch2.getDepartureDate())) {
            // 상태코드
            statusCode = HttpStatus.BAD_REQUEST.value();
            // alert 메시지로 사용함
            message = "첫 번째 여정과 두 번째 여정의 순서가 잘못되었습니다.\n다시 선택해주시길 바랍니다.";
            code = Define.CODE_FAIL;
            resultCode = Define.RESULT_CODE_FAIL;
            data = true;
            
        // 스케줄1의 도착시간이 스케줄2의 출발시간보다 늦다면
        // 즉, 스케줄1과 스케줄2의 운항시간이 겹친다면
        } else if (sch1.getArrivalDate().after(sch2.getDepartureDate())) {
            statusCode = HttpStatus.BAD_REQUEST.value();
            message = "첫 번째 여정과 두 번째 여정의 일정이 겹칩니다.\n다시 선택해주시길 바랍니다.";
            code = Define.CODE_FAIL;
            resultCode = Define.RESULT_CODE_FAIL;
            data = true;
        }
        
        return new ResponseDto<Boolean>(statusCode, code, message, resultCode, data);    
    }
Colored by Color Scripter
cs

 

#  AJAX 통신을 실행한 script 부분

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    if (type == 2) {
        
        let sch1Id = $("input[name=\"schedule1\"]:checked").val().split("_")[1];
        let sch2Id = $("input[name=\"schedule2\"]:checked").val().split("_")[1];
        
        let data = {
            scheduleId1: sch1Id,
            scheduleId2: sch2Id
        };
        
        let result = true;
        
        $.ajax({
            type: 'POST',
            url: '/ticket/checkDate',
            contentType: "application/json; charset=UTF-8",
            data: JSON.stringify(data),
            dataType: 'json',
            async: false   // 이거 해주니까 ajax 기다렸다가 아래에 return result 실행
        })
        .done((res) => {
            // 일정 선택에 문제가 있다면
            if (res.code == -1) {
                alert(res.message);
                result = false;
            }
        })
        .fail((error) => {
            console.log(error);
        });
        
        return result;            
    }
Colored by Color Scripter
cs
320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Spring Boot' 카테고리의 다른 글

[Spring Boot] JPA 기초 개념  (0) 2023.07.11
[Spring Boot] CSRF (사이트 간 요청 위조)  (0) 2023.06.18
[Spring Boot] CoolSMS를 활용한 문자 발송 기능 구현  (0) 2023.05.24
[Spring Boot] 렌더링 방식 (CSR, SSR)  (0) 2023.05.11
[Spring Boot] 리소스 처리 : HOST 컴퓨터의 리소스 활용하기  (0) 2023.04.24
'Java/Spring Boot' 카테고리의 다른 글
  • [Spring Boot] JPA 기초 개념
  • [Spring Boot] CSRF (사이트 간 요청 위조)
  • [Spring Boot] CoolSMS를 활용한 문자 발송 기능 구현
  • [Spring Boot] 렌더링 방식 (CSR, SSR)
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (383)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • etc. (13)
      • Error Note (15)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    typeScript
    티스토리챌린지
    개발일지
    오블완
    Hotkeys
    jsp
    http
    cs
    Codeigniter
    java
    vuejs
    SpringBoot
    errorNote
    jQuery
    면접
    zapier
    Android
    js
    CSS
    C#
    git
    tailwindcss
    Wordpress
    Swing
    SEO
    SQL
    php
    HTML
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Spring Boot] AJAX 통신 시 데이터를 통일된 방식으로 반환하기
상단으로

티스토리툴바