정부혜택 정보 (API 구현)

10 read
빌드업 프로그램신용보증기금
서비스분야고용·창업
신청방법기타 온라인신청
신청기한상시신청
자세히 보기
밸류업 프로그램신용보증기금
서비스분야고용·창업
신청방법기타 온라인신청
신청기한상시신청
자세히 보기
투자옵션부보증신용보증기금
서비스분야고용·창업
신청방법기타 온라인신청
신청기한상시신청
자세히 보기
혁신아이콘 지원 프로그램신용보증기금
서비스분야고용·창업
신청방법기타 온라인신청
신청기한상시신청
자세히 보기
혁신스타트업 성장지원 프로그램신용보증기금
서비스분야고용·창업
신청방법기타 온라인신청
신청기한상시신청
자세히 보기
영업 휴업 사업자 대상 TV수신료 면제한국방송공사
서비스분야생활안정
신청방법방문신청||직접입력
신청기한상시신청
자세히 보기
긴급돌봄 지원보건복지부
서비스분야생활안정
신청방법기타 온라인신청||방문신청
신청기한지자체별 상이
자세히 보기
금연캠프사업보건복지부
서비스분야보건·의료
신청방법기타 온라인신청||방문신청||직접입력
신청기한상시신청
자세히 보기
유아교육비·보육료 추가지원교육부
서비스분야보육·교육
신청방법기타 온라인신청
신청기한기관별 신청기간에 신청
자세히 보기
초·중·고 교육비 지원교육부
서비스분야보육·교육
신청방법기타 온라인신청||방문신청
신청기한상시신청
자세히 보기
법학전문대학원 취약계층 장학금교육부
서비스분야보육·교육
신청방법직접입력
신청기한1학기: 전년도 12월 중 , 2학기: 5·6월 중
자세히 보기
영유아보육료 지원교육부
서비스분야보육·교육
신청방법기타 온라인신청||방문신청
신청기한상시신청
자세히 보기
로직 설명
  1. API URL - https://api.odcloud.kr/api/gov24/v3/serviceList
  2. serviceKey - authkey ( 참고 : https://www.data.go.kr/data/15113968/openapi.do )
  3. 파라미터
    • 등록일시(이상) : cond[등록일시::GTE]
    • 등록일시(이하) : cond[등록일시::LTE]
    • 소관기관유형 : cond[소관기관유형::LIKE]
    • 기타 파라미터 : https://www.data.go.kr/data/15113968/openapi.do 참고
  4. 사용한 로직
    /**
     * 정부혜택 서비스 관련 API
     */
    export class PublicService {
    	/**
    	 * @param {string} authkey - data.go.kr 인증 키
    	 */
    	constructor(authkey) {
    		this.authkey = authkey;
    	}
    
    	async getList(opts) {
    
    		const { startDate, endDate, page=1, perPage=9, organ } = opts;
    
    		let conds = [];
    		
    		if(startDate) {
    			const strDate = DateUtil.format('yyyyMMdd', startDate);
    			conds.push(encodeURIComponent('cond[등록일시::GTE]')+`=${strDate}`);
    		} else {
    			const date = new Date();
    			date.setFullYear(date.getFullYear() - 1);
    			date.setMonth(0);
    			date.setDate(1);
    			
    			const strDate = DateUtil.format('yyyyMMdd', date);
    			conds.push(encodeURIComponent('cond[등록일시::GTE]')+`=${strDate}`);
    		}
    
    		if(endDate) {
    			const strDate = DateUtil.format('yyyyMMdd', endDate);
    			conds.push(encodeURIComponent('cond[등록일시::LTE]')+`=${strDate}`);
    		}
    
    		if(organ) {
    			conds.push(encodeURIComponent('cond[소관기관유형::LIKE]')+`=${organ}`);
    		}
    
    		const cond = conds.join('&');
    
    		const fetchUrl = 'https://api.odcloud.kr/api/gov24/v3/serviceList';
    		const url = `${fetchUrl}?serviceKey=${this.authkey}&page=${page}&perPage=${perPage}&${cond}`;
    
    		const res = await fetch(url, {
    			headers: {
    				'accept': 'application/json'
    			}
    		});
    		if (!res.ok) {
    			throw new Error('API 응답 실패');
    		}
    
    		return await res.json();
    	}
    }