inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

코드로 배우는 React 19 with 스프링부트 API서버

서비스계층과 컨트롤러(3)-상품수정

Product 컨트롤러 api 결과값 리턴 질문

172

현이

작성한 질문수 15

0

상품 등록이나 수정을 하고나서

return Map.of("result", "Success")

이렇게 리턴해주셨는데

실무에서 이런 방식을 많이 사용하나요 아니면 교육목적이기 때문에 조금 러프하게 하신건가요??

이번 강의를 보고 실무와 가깝게 프로젝트를 진행하고 싶은데 이렇게 Map에 간단하게 리턴할지 아니면 api마다 매번

ResponseEntity에 Http Status Code 담아 리턴해야 할지 기준을 모르겠습니다.

제 목적에 맞게 하려면 어떤 방식으로 api 결과를 리턴해줘야 할까요??

react spring-boot jpa jwt redux-toolkit

답변 1

1

구멍가게코딩단

말씀하신대로 예제의 성격이 강하다보니 '성공/실패'와 같은 단순 결과를 반환했습니다.

예제에서는 DML(insert, update, delete)에 대해서는 단순 결과를 반환하는 방식을 이용했지만

 

API서버라면 등록/수정의 경우에는 현재 데이터베이스에 있는 상태를 그대로 반환하는게 낫다고 생각합니다. 등록의 경우 식별키와 날짜 등을 포함하고, 수정의 경우 수정된 상태를 반환하는 방식입니다.

 

좀 엄격하게 API 서버를 제작하고 싶으시다면 @RestControllerAdvice와 예외 설계를 적절히 섞어서 사용하셔야 합니다. 아래의 코드는 제가 예제로 사용하는 코드의 일부입니다.

 

public enum MemberExceptions {

  NOT_FOUND("NOT_FOUND", 404),
  DUPLICATE("DUPLICATE", 409),
  INVALID("INVALID", 400),

  BAD_CREDENTIALS("BAD_CREDENTIALS", 401);


  private MemberTaskException memberTaskException;

  MemberExceptions(String msg, int code) {
    memberTaskException = new MemberTaskException(msg, code);
  }

  public MemberTaskException get() {
    return memberTaskException;
  }

}

@RestControllerAdvice
@Log4j2
public class TokenControllerAdvice {

  @ExceptionHandler(MemberTaskException.class)
  public ResponseEntity<Map<String, String>> handleTaskException(MemberTaskException ex) {

    log.error(ex.getMessage());

    String msg = ex.getMsg();
    int status = ex.getCode();

    Map<String, String> map = Map.of("error", msg);


    return ResponseEntity.status(status).body(map);
  }

 

0

현이

빠르고 좋은 답변 감사합니다!!

동일하게 실습하는데 이상하게 페이지를 찾지 못하네요..

0

74

2

22. REST 방식 컨트롤러 만들기(2), 29. 등록처리 부분 질문이 있습니다.

0

74

2

37강. 강의수업듣다 질문드립니다.

0

57

2

TodoDTO test 함수

0

80

3

강사님 오타 있음요

0

79

2

No 1. 교제(ppt) soruce 복붙 문제 의 건

0

95

4

No 1. 교제(ppt) soruce 복붙 문제 의 건

0

70

3

17강 문의드립니다.

0

44

1

카카오 연동설정이 이제 안되는거 같아요

0

195

2

8장 마지막 강의 시 오류

0

98

4

혹시 뭐가 문제인지 알 수 있나요?

0

87

2

챕터: React-Router 설정

0

58

2

백)TODO관련

0

56

2

마리아 db 설치중 포트를 이미 사용중이라고 합니다

0

113

2

이강의 듣고 소화시켰다면 몇년차 정도 개발자라고 할수 있을까요?

0

105

1

CSR , SSR 의 수요 궁금증 질문

0

83

2

섹션5부터...

0

73

1

간단한 코드 질문!!

0

61

2

tbl_todo 질문입니다

0

65

2

수업 외 질문인데 'tbl'이 무슨 의미인가요???

0

292

2

엔티티클래스에서 질문입니다

0

78

2

수정시 writer값이 삭제되는 오류

0

42

2

교안 31 오타 수정해주세요

0

64

2

쿠키에 accessToken, refreshToken을 담고, 조회 시에 undefined

0

81

1