공공데이터 포털 오픈 API 사용법
현재 구현 중인 프로젝트에서 사업자 등록 번호를 입력하면 해당 사업자가 사업을 계속하고있는지 휴업인지 폐업인지 여부를 알아야하는 기능이 필요했다. 마침 검색해 보니 정부에서 국세청 정보를 무료로 오픈API를 이용하여 실시간 조회를 가능하게 했다는 기사를 보고 직접 구현해보기로 했다.
1. 공공데이터 포털 가입 및 API 활용신청
https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15081808
해당 사업자 등록 정보의 진위여부와 현재 상태를 알 수 있는 API를 제공한다.
API 유형은 REST이며 데이터 포맷은 JSON/XML 두가지 로 받을 수 있다. 비용은 무료이므로 유료 서비스를 따로 이용하지 않아도 된다!
우측 상단에 활용신청 버튼을 클릭하면 아래와 같이 입력하라고 뜬다.
활용목적으로는 웹사이트 개발이며 우리가 구현할 서비스에 대해 작성하고 동의합니다를 체크하면 바로 승인된다.
2. 오픈 API 활용
활용 기간은 2년이며 일반 인증키가 두가지가 있는데 하나는 암호화가 되었고 하나는 암호화되지 않은 키여서 본인은 암호화된 Encoding 키를 이용하여 API를 사용했다.
API 호출 시 serviceKey에는 위에서 발급받은 인증키를 쿼리로 넣고 returnType은 JSON으로 하여 POST 했다. 이 때, b_no (사업자번호) 값을 body에 넣어줘야 조회가 가능한데 한 번에 100개의 업체를 조회할 수 있으므로 배열 형태로 넣어야한다.
/**
* 사업자 휴폐업조회
* @param biz_num 사업자번호
* @returns 휴폐업 상태 코드 반환 - 01 : 계속사업자, 02 : 휴업자, 03 : 폐업자
*/
const verifyBiz = async (biz_num : string) => {
console.log(biz_num);
const serviceKey = "발급받은 인증키";
const url = `http://api.odcloud.kr/api/nts-businessman/v1/status?serviceKey=${serviceKey}&returnType=JSON`;
try {
const { data } = await axios.post(url, { "b_no" : [biz_num] }, {
headers: {
"Content-Type": "application/json",
}
});
if ((data.status_code === 'OK') && (data.match_cnt > 0)) {
return { res : true, msg : `휴폐업조회 완료. 사업자 번호 : ${biz_num}`, biz_code : data.data[0].b_stt_cd};
} else {
return { res : false, msg : '휴폐업조회 실패.'};
}
} catch (error) {
if (axios.isAxiosError(error)) {
console.log('error message: ', error.message);
// 👇️ error: AxiosError<any, any>
return error.message;
} else {
console.log('unexpected error: ', error);
return 'An unexpected error occurred';
}
}
}
axios 라이브러리를 이용하여 쉽게 request를 할 수 있다. "b_no" : [사업자등록번호들] 을 넣고 헤더에는 json 타입을 넣고 조회된 정보를 받아온다.
b_stt_cd 가 현재 사업자의 상태코드기 때문에 받아온 상태코드값을 리턴하며, 호출 한번당 한 업체만 조회할 수 있도록 구현했다.
결과는 아래와 같이 나온다.
'개발 Study > Node' 카테고리의 다른 글
[Node.js] 공공 오픈 API 이용하기 - 지하철 노선 전체 정보 가져오기 (2) | 2022.12.16 |
---|---|
[Sequelize] ForeignKey로 Cascade delete 적용하기 (0) | 2022.12.15 |
[Node.js] 비밀번호 암호화(bcrypt HASH) (0) | 2022.10.06 |
[SocketIO/WebRTC] 줌 클론 코딩(2) - WebRTC로 카메라 연결하기 (3) | 2022.08.23 |
[SocketIO/WebRTC] 줌 클론 코딩(1) - Socket.io로 채팅 만들기 (3) | 2022.08.22 |
댓글