본문 바로가기
개발노트

[JAVA] API만들기 & 원하는 값만 가져오기

by SoonNote 2023. 9. 20.
반응형

위 사진은 가라데이터를 넣어 만든 섬상전자 의 기업 정보이다.

 

7개의 테이블에 각가 데이터를 집어넣었으며 해당하는 모든 데이터를 불러오는 API이다.

 

여기서 파라미터를 통하여 필요한 데이터만을 추출하는 기능을 추가하였다.

 

 

requestParams에 원하는 값들을 ',' 콤마로 구분하여 추가하면 원하는 데이터들만 추출이 가능하다

아무것도 입력하지않거나 일치하지않는 파라미터값을 입력하면 null값을 반환하고 개수 제한없이 ','콤바로 구분하면 필요한 모든데이터를 반환가능하다.

 

예를 들어 기업이름(korentrnm), 대표자이름(korreprnm), 폐업구분여부(clsbiz_yndivcd) 를 추가하면

위 사진처럼 3가지의 데이터를 가져올 수 있다.

 

 

다음 코드는 requestParams가 있을때와 없을때 구분하는 코드다.

 

	HashMap<String, Object> API = new HashMap<String, Object>();
		
        //변경사항이 생길 수 있어 각각 테이블을 조회
	HashMap<String, Object> test1 = DAO.test1(param);		
	HashMap<String, Object> test2 = DAO.test2(param);
    	HashMap<String, Object> test3 = DAO.test3(param);
    	HashMap<String, Object> test4 = DAO.test4(param);
    	HashMap<String, Object> test5 = DAO.test5(param);
    	HashMap<String, Object> test6 = DAO.test6(param);
    	HashMap<String, Object> test7 = DAO.test7(param);
 
 		
    	String requestParams = StringUtil.noNull(param.get("requestParams"));
        // requestParams이 있는지 확인
    	if (requestParams != null && !requestParams.isEmpty()) {
    	    String[] requests = requestParams.split(","); // ,기준으로 구분
    	    HashMap<String, Object>[] dataMaps = new HashMap[]{
    	        test1, test2, test3, test4, test5, test6, test7
    	    }; // 위 7개의 hashmap을 묶는다.
    	    
    	    for (String request : requests) { //dataMaps에 requestParams이 있는것을 찾는다
    	        for (HashMap<String, Object> dataMap : dataMaps) {
    	            if (dataMap != null && dataMap.containsKey(request)) {
    	                API.put(request, dataMap.get(request));
    	                break; // 해당 요청에 대한 데이터를 찾았으면 다음 요청으로 넘어감
    	            }
    	        }
    	    }
    	}else { //requestParams이 없을경우 전체데이터를 반환
    		API.put("test1", test1);
    		API.put("test2", test2);
    		API.put("test3", test3);
    		API.put("test4", test4);
    		API.put("test5", test5);
    		API.put("test6", test6);
    		API.put("test7", test7);
    	}
		
		return API;

 

1개의 쿼리를 돌려하면 간단하지만 각 테이블 쿼리마다 변경될 가능성이 있어 각각 조회를 하였고 7개의 hashmap에서 requestParams를 조회하였는데,

 HashMap<String, Object>[] dataMaps = new HashMap[]{
    	        test1, test2, test3, test4, test5, test6, test7
    	    };

를 사용해서 쉽게 가져올 수 있도록 하였다.

 

 

 

추후에는 JWT토큰이나 인증단계를 추가하여 인가된 사용자만 API호출이 가능하도록 구현 예정이다.

반응형