npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

data-go-kr

v1.3.0

Published

공공데이터포털(https://www.data.go.kr/) OpenAPI CLI 툴

Downloads

15

Readme

data-go-kr

개요

공공데이터포털 의 OpenAPI 를 요청하는 CLI 툴 입니다.

How to Use

전역 설치

npm install -g data-go-kr

data-go-kr --config <config-path> --service-key <service-key>

npx 사용

npx data-go-kr --config <config-path> --service-key <service-key>

성공 시 표준 출력으로, 실패 시 표준 에러로 결과를 출력합니다.

Config File

공공데이터 API 요청 시 필요한 파라미터들을 설정해놓은 파일입니다.

config/config.template.json을 참고해주세요.

{
    "serviceName": "service name",
    "serviceKey": "your serviceKey",
    "authType": "header|query",
    "endpoint": "api endpoint",
    // and you want...
}

각 서비스 별로 필요한 파라미터 정보는 그 서비스의 API Spec 을 참고해주세요.

파라미터 우선순위

serviceKey, authType, endpoint, serviceName 은 필수 값 입니다.

미리 예약된 키워드는 CLI Option 을 이용해 덮어쓸 수 있습니다.

우선 순위: 1. CLI Option 2. Config File

data-go-kr --config <config-path> --service-key <service-key> --auth-type <auth-type>

만약 --service-key, --auth-type 옵션을 사용했다면 config file 에서 serviceKey, authType 이 무시됩니다.

Config File 예제

{
    "serviceName": "getCorpOutline_V2",
    "serviceKey": "your serviceKey",
    "authType": "query",
    "endpoint": "https://apis.data.go.kr/1160100/service/GetCorpBasicInfoService_V2/",
    "resultType": "json",
    "crno": "1101113892240",
    "corpNm": "메리츠자산운용"
}

CLI Option

Options:
  -c, --config <string>        공공데이터 API 요청 시 필요한 파라미터들의 설정 파일 경로 (required)
  -m, --service-name <string>  서비스 명
  -s, --service-key <string>   서비스 키
  -a, --auth-type <string>     인증 타입 (header|query)
  -e, --endpoint <string>      엔드포인트 주소
  -r, --max-retries <number>   요청 실패 시 최대 재시도 회수 (default: 5)
  -d, --delay <number>         요청 실패 시 재시도 전 대기시간 (ms) (default: 1000)
  -n, --num-of-rows <number>   페이지 당 불러올 행의 개수 (default: 10)
  -p, --page-no <number>       페이지 번호 (default: 1)
  --pretty <indent>            이쁘게 출력
  --no-num-of-rows             기본 페이지네이션 파라미터(num-of-rows)를 사용하지 않음
  --no-page-no                 기본 페이지네이션 파라미터(page-no)를 사용하지 않음

보안상의 이유로

기본적으로 페이지네이션은 numOfRows, pageNo 쿼리 파라미터를 사용합니다.

페이지네이션 방식이 다른 경우 --no-num-of-rows, --no-page-no 파라미터를 사용하고,

config.json 파일에 페이지네이션 파라미터를 삽입해주세요.

Error Handling

오류는 모두 표준 에러로 출력합니다.

exit code 는 1 입니다.

OpenAPI Error

OpenAPI 에서 출력되는 오류메세지는 XML 로만 출력되며, 형태는 아래와 같습니다.


<OpenAPI_ServiceResponse>
    <cmmMsgHeader>
        <errMsg>SERVICE ERROR</errMsg>
        <returnAuthMsg>SERVICE_KEY_IS_NOT_REGISTERED_ERROR</returnAuthMsg>
        <returnReasonCode>30</returnReasonCode>
    </cmmMsgHeader>
</OpenAPI_ServiceResponse>

| 에러코드 | 에러메세지 | 설명 | |------|--------------------------------------------------|------------------------| | 1 | APPLICATION ERROR | 어플리케이션 에러 | | 4 | HTTP_ERROR | HTTP 에러 | | 12 | NO_OPENAPI_SERVICE_ERROR | 해당 오픈 API 서비스가 없거나 폐기됨 | | 20 | SERVICE_ACCESS_DENIED_ERROR | 서비스 접근거부 | | 22 | LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR | 서비스 요청제한횟수 초과에러 | | 30 | SERVICE_KEY_IS_NOT_REGISTERED_ERROR | 등록되지 않은 서비스키 | | 31 | DEADLINE_HAS_EXPIRED_ERROR | 활용기간 만료 | | 32 | UNREGISTERED_IP_ERROR | 등록되지 않은 IP | | 99 | UNKNOWN_ERROR | 기타에러 |

Application Error

CLI 툴 자체의 에러는 아래와 같은 포맷으로 출력됩니다.

error: maxRetries should be integer and greater than 0

Example

금융위원회_기업기본정보

Config

{
  "serviceName": "getCorpOutline_V2",
  "authType": "query",
  "endpoint": "http://apis.data.go.kr/1160100/service/GetCorpBasicInfoService_V2/",
  "resultType": "json",
  "crno": "1101113892240",
  "corpNm": "메리츠자산운용"
}

Command

data-go-kr --config config.getCorpOutline_V2.json --service-key <service-key>

Response

{"response":{"body":{"items":{"item":[{"crno":"1101113892240","corpNm":"메리츠자산운용","corpEnsnNm":"Meritz Asset Management","enpPbanCmpyNm":"메리츠자산운용","enpRprFnm":"이동진","corpRegMrktDcd":"E","corpRegMrktDcdNm":"기타","corpDcd""bzno":"1078708658","enpOzpno":"03051","enpBsadr":"서울특별시 종로구 북촌로 104 계동빌딩","enpDtadr":"서울특별시 종로구 북촌로 104 계동빌딩","enpHmpgUrl":"","enpTlno":"02-6320-3000","enpFxno":"02-6320-3009","sicNm":"64201","enpEstbDt":"2XchgLstgDt":"","enpXchgLstgAbolDt":"","enpKosdaqLstgDt":"","enpKosdaqLstgAbolDt":"","enpKrxLstgDt":"","enpKrxLstgAbolDt":"","smenpYn":"","enpMntrBnkNm":"","enpEmpeCnt":"0","empeAvgCnwkTermCtt":"","enpPn1AvgSlryAmt":"0","actnAudpnNm":"","audtRptOpnnCtt":"","enpMainBizNm":"","fssCorpUnqNo":"00685935","fssCorpChgDtm":"2023/03/20","fstOpegDt":"20230320","lastOpegDt":"20230404"},{"crno":"1101113892240","corpNm":"메리츠자산운용","corpEnsnNm":"Meritz Asset Management","enpPbanCmpyNm":"메리츠자산운용","enpRprFnm":"John Lee(이정복)","corpRegMrktDcd":"E","corpRegMrktDcdNm":"기타","corpDcd":"","corpDcdNm":"","bzno":"1078708658","enpOzpno":"03051","enpBsadr":"서울특별시 종로구 북촌로 104 계동빌딩","enpDtadr":"서울gUrl":"","enpTlno":"02-6320-3000","enpFxno":"02-6320-3009","sicNm":"64201","enpEstbDt":"20080506","enpStacMm":"12","enpXchgLstgDt":"","enpXchgLstgAbolDt":"","enpKosdaqLstgDt":"","enpKosdaqLstgAbolDt":"","enpKrxLstgDt":"","enpKrxLstgAbolDt":"","smenpYn":"","enpMntrBnkNm":"","enpEmpeCnt":"0","empeAvgCnwkTermCtt":"","enpPn1AvgSlryAmt":"0","actnAudpnNm":"","audtRptOpnnCtt":"","enpMainBizNm":"","fssCorpUnqNo":"00685935","fssCorpChgDtm":"2023/01/05","fstOpegDt":"20200509","lastOpegDt":"20230319"}]},"numOfRows":10,"pageNo":1,"totalCount":2},"header":{"resultCode":"00","resultMsg":"NORMAL SERVICE."}}}