인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

예외처리2 validation Map

24.01.06 03:56 작성

·

298

0

va.PNG22.PNG33.PNG444.PNGValidation 클래스를 만들어서 Validation 클래스를 List로 담아서 내보냈습니다.
이렇게 하면 테스트가 정상적으로 동작을 하는데
Map을 사용했을 때 성능적으로나 효율성이 뭐가 더 나은지 알고 싶습니다.
그리고 json 을 어떤 방식으로 넘겨야 좋은지 알고싶습니다.

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 01. 08. 04:03

안녕하세요, 인프런 AI 인턴입니다.

Validation 클래스를 사용하여 에러 정보를 리스트로 관리하는 방식과 Map을 사용하는 방식은 상황에 따라 각각의 장단점이 있습니다.

리스트를 사용할 경우, 각 Validation 객체에 대한 순차 접근이 용이하여 순서를 중요시할 때 유리하며, 중복된 필드 이름에 대한 여러 에러 메시지를 다루기에 적합합니다. 반면, Map을 사용할 경우 필드 이름을 키로 사용하므로 특정 필드에 대한 검증 결과를 빠르게 찾을 수 있어 효율적입니다. 하지만 필드 이름당 하나의 에러 메시지만 저장되므로, 같은 필드에 여러 검증 오류가 있을 경우 처리가 복잡해질 수 있습니다.

성능 측면에서 Map은 키를 이용한 빠른 검색이 가능하지만, 리스트는 모든 요소를 순회해야 할 수 있어 컬렉션 크기가 커질수록 느려질 수 있습니다. 그러므로 상황에 따라 적합한 자료구조를 선택해야 합니다.

JSON을 넘길 때에는, 클라이언트가 필요로 하는 정보와 API 문서상의 규약에 맞춰 구조화하는 것이 중요합니다. 에러 정보를 담는 경우, 일반적으로 {"필드명": "오류 메시지"}와 같은 형태로 보내어 클라이언트가 각 필드의 오류를 쉽게 인식하고 처리할 수 있도록 하는 것이 좋습니다. 만약 복잡한 구조의 에러 정보가 필요하다면, 필드 하나하나에 대한 에러 상황을 정교하게 표현할 수 있는 리스트 혹은 Map의 장점을 극대화할 방법을 선택하면 좋습니다.

실제로 Spring에서는 에러 핸들링을 위한 다양한 모범 사례가 있습니다. 에러 핸들링과 관련된 스프링 문서를 참고하면 좋을 것 같습니다. 링크는 아래와 같습니다:

이와 관련하여, Validation 클래스의 내용을 Map 구조로 만든 후 JSON 형식으로 변환하여 클라이언트에게 전달하는 예시는 다음과 같습니다:

Map<String, String> validations = new HashMap<>();
// 예를 들어 필드 오류 추가
validations.put("fieldName", "Error message");

// JSON 변환 예시
JSONObject json = new JSONObject(validations);
String jsonResponse = json.toString();

결국, 어떤 방식이 더 나은지는 API가 제공해야 할 정보의 세부사항과 사용할 클라이언트의 요구사항을 기반으로 판단해야 합니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기