inflearn logo
강의

Course

Instructor

Hodolman's Stomach-Turning Development Show (SpringBoot, Vue.JS, AWS)

데이터 검증2 ErrorResponse의 Map 변경

540

juni998

1 asked

1

안녕하세요 호돌님!

데이터 검증2 부분에서 Map을 Dto로 변경후 테스트를 통과하였는데,

맞는 방법인지, 더 효율적인 방법이 있는지 궁금합니다!

 

변경한 코드내용은 다음과 같습니다

 

ErrorResponse

ErrorResponse.png

Validation 클래스 생성

Validation.png

테스트 코드

테스트코드.png

테스트 결과

테스트결과.png

답변 부탁드립니다 감사합니다!

vue.js Spring Security spring-boot aws jpa JPA spring-security vuejs

Answer 1

1

hodolman888675

안녕하세요. 호돌맨입니다.
와 이걸 개선하신분이 있다니 정말 환영입니다. (기다리고 있었습니다.)
따로 클래스를 추가 하신 부분 멋있습니다.

현재는 title 값이 잘못된 경우에 대하여 오류를 뱉으신것 같습니다.
만약 서버에서 한 가지 필드에 대해서만 피드백을 응답한다면 좋은 방법 같습니다.

그런데 저는 실무에서 클라이언트에서 전달받은 값을 모두 검증한 뒤에 잘못된 부분을 모두 피드백 해주는 형태로 진행한 경우가 많았습니다.

{
  "code": 400,
  "message": "..",
  "validation": {
    "fieldName": "title",
    "message": "타이틀을 입력해주세요",
    "fieldName": "content", // 키 중복
    "message": "콘텐츠를 입력해주세요." // 키 중복
  }
}

예를들어 title 뿐만 아니라content 값에도 문제가 있다면 두 개의 값에 필드백을 응답 하는거죠.
아뿔싸! 하지만 질문자님의 json 구조라면 키 값이 중복 됩니다.

 

{
  "code": 400,
  "message": "..",
  "validation": {
    "title": "타이틀을 입력해주세요",
    "content": "콘텐츠를 입력해주세요."
  }
}

키 값을 필드 명으로 하면 좋겠지만.. 그러면 클래스의 값을 동적으로 만들어내야하니 힘들겠죠. (그래서 제가 Map을 이용했죠..ㅋ)

그렇다면 여러개의 피드백을 전달하기 위해 질문자님의 구조 + 리스트를 사용해 본거는 건 어떨까요?

{
  "code": 400,
  "message": "..",
  "validation": [
    {
      "fieldName": "title",
      "message": "타이틀을 입력해주세요"
    },
    {
      "fieldName": "content",
      "message": "..."
    }
  ]
}

위와 같이 말이죠!

한 번 개선 해보시면 좋을것 같습니다! 으핫핫

감사합니다.

Deprecated 관련 사항들

0

100

2

깃헙 collaboator 초대 관련

0

87

1

강의 듣다가 도커 이미지 생성시 각각도 가능하나 그렇게 사용하는데가 많은지 모르겠다라는 말을 듣고 남김니다

0

157

2

logout 후에 login 페이지 이동은 어디서 시켜주는건가요?

0

231

1

다중 데이터를 삭제 할 때

0

270

2

querydsl Q class 이슈

0

414

2

Windows WSL Vue 설정

2

246

1

Dip, @transactional

0

187

1

[vite] http proxy error: /auth/login

0

1043

2

로그인 하고 나서 GET요청으로 메인페이지 요청

0

234

2

GitHub Collaborator 초대 관련

0

256

2

Window에서 Vue.js 설정

0

321

2

(솔루션 수정)'tsyringe' Error: TypeInfo not known for "클래스명"

0

713

2

collaboator로 초대받을 수 있을까요??

0

283

2

SecurityMockContext 로부터 유저 정보를 가져오기

0

261

1

given 부분이 길어질 때 어떻게 처리하면 좋을까요?

0

318

1

섹션9 프론트의 코드를 보고싶습니다,,,

0

423

1

Spring Security - defaultSuccessUrl 질문

0

625

1

강의 화면이 나오지 않습니다. 음성과 자막만 나와요

0

302

1

JPAQueryFactory(em)의 객체 생성자 오류에 대해서 질문이 있습니다ㅜㅜ

0

690

2

ExceptionHandler가 AccessDeniedHandler(Http403Handler)를 먹어버리는 현상

0

1179

2

섹션10 언제 나오나요?

0

484

1

CommentService에서 Repository를 호출하지 않는데도

0

342

1

Editor....를 활용한 패턴에 질문있습니다.

0

494

1