API 응답에서 다수의 키 값들을 검증할 때 코드의 중복을 줄이는 것은 유지보수성을 향상시키고, 가독성을 높이는 데 중요합니다. 이를 위해 몇 가지 접근 방법을 사용할 수 있습니다.
검증 함수 사용
공통된 검증 로직을 별도의 함수로 분리하여, 필요할 때마다 이 함수를 호출하는 방법입니다. 이 함수는 필수 키 목록과 함께 API 응답 객체를 인자로 받아, 모든 필수 키가 응답 객체에 존재하는지 검사할 수 있습니다.
function validateApiResponseKeys(responseObject, requiredKeys) {
return requiredKeys.every(key => key in responseObject);
}
const apiResponse = { key1: 'value1', key2: 'value2' };
const requiredKeys = ['key1', 'key2', 'key3'];
const isValid = validateApiResponseKeys(apiResponse, requiredKeys);
if (!isValid) {
console.log('응답에서 필수 키가 누락되었습니다.');
}고차 함수 사용
검증 로직을 추상화하여 고차 함수(Higher-order function)를 만드는 방법입니다. 이 함수는 필수 키 목록을 인자로 받고, 검증 함수를 반환합니다. 반환된 검증 함수는 API 응답 객체를 받아 검증을 수행합니다.
const createResponseValidator = (requiredKeys) => (responseObject) =>
requiredKeys.every(key => key in responseObject);
const validateApiResponse = createResponseValidator(['key1', 'key2', 'key3']);
const apiResponse = { key1: 'value1', key2: 'value2' };
if (!validateApiResponse(apiResponse)) {
console.log('응답에서 필수 키가 누락되었습니다.');
}Lodash _.has 함수 사용
Lodash와 같은 유틸리티 라이브러리를 사용하여 객체의 키를 검증하는 방법입니다. Lodash의 _.has 함수 등을 사용하면 간결하게 필수 키의 존재 여부를 검사할 수 있습니다.
const apiResponse = { key1: 'value1', key2: 'value2' };
const requiredKeys = ['key1', 'key2', 'key3'];
const isValid = requiredKeys.every(key => _.has(apiResponse, key));
if (!isValid) {
console.log('응답에서 필수 키가 누락되었습니다.');
}참고문서
![[javascript]객체의 키 중에서 숫자 타입의 값을 필터링하고 합산 javascript](https://markettraders.kr/wp-content/uploads/2021/12/javascript-218x150.jpg)













![[광주]위파크 더 센트럴 분양주택 분양안내](https://markettraders.kr/wp-content/uploads/2023/08/2023000351-218x150.png)
![[강원]힐스테이트 속초 분양주택 분양안내](https://markettraders.kr/wp-content/uploads/2023/08/20230707051118016175-218x150.jpg)
![[강원]e편한세상 원주 프리모원(1회차) 분양주택 분양안내](https://markettraders.kr/wp-content/uploads/2023/08/2023000284-218x150.jpg)
![[서울]수유 시그니티 분양주택 분양안내](https://markettraders.kr/wp-content/uploads/2023/08/apartment-218x150.jpg)
![[경기]광명 센트럴 아이파크 분양주택 분양안내](https://markettraders.kr/wp-content/uploads/2023/08/2023000303-218x150.jpg)
