mirror of
https://github.com/NomaDamas/k-skill.git
synced 2026-09-14 16:37:18 +08:00
121 lines
4.4 KiB
Markdown
121 lines
4.4 KiB
Markdown
# 도서관 도서 조회 가이드
|
|
|
|
## 이 기능으로 할 수 있는 일
|
|
|
|
도서관 정보나루(Data4Library) Open API를 `k-skill-proxy` 경유로 호출해 한국 공공도서관 도서 정보를 조회한다.
|
|
|
|
- 키워드 기반 도서 검색
|
|
- ISBN 기반 도서 상세 조회
|
|
- ISBN + 지역코드 기반 소장 도서관 조회
|
|
- 도서관 코드 + ISBN 기반 특정 도서관 소장/대출 가능 여부 조회
|
|
|
|
## 가장 중요한 규칙
|
|
|
|
사용자에게 필요한 시크릿은 없으며, `DATA4LIBRARY_AUTH_KEY`는 프록시 서버에서만 관리한다.
|
|
|
|
1. 사용자는 **`DATA4LIBRARY_AUTH_KEY`를 들고 있지 않는다.** `k-skill-proxy`만 upstream `authKey`를 붙인다.
|
|
2. 공개 read-only 조회만 한다. 도서관 로그인, 예약, 대출 자동화는 하지 않는다.
|
|
3. 도서관명·지역명이 애매하면 후보를 보여 주고 사용자가 선택하게 한다.
|
|
|
|
## 먼저 필요한 것
|
|
|
|
- 인터넷 연결
|
|
- 프록시 base URL (기본: `https://k-skill-proxy.nomadamas.org`)
|
|
- 프록시 서버 환경변수 `DATA4LIBRARY_AUTH_KEY` (self-host 운영자만 필요)
|
|
|
|
## 기본 조회 흐름
|
|
|
|
### 1) 도서 검색
|
|
|
|
```bash
|
|
curl -fsS --get 'https://k-skill-proxy.nomadamas.org/v1/data4library/book-search' \
|
|
--data-urlencode 'keyword=역사' \
|
|
--data-urlencode 'pageNo=1' \
|
|
--data-urlencode 'pageSize=10'
|
|
```
|
|
|
|
`keyword` 대신 `q`/`query`, `pageNo`/`pageSize` 대신 `page`/`limit`도 쓸 수 있다. 결과에서 `bookname`, `authors`, `publisher`, `publication_year`, `isbn13`을 확인한다.
|
|
|
|
### 2) 도서 상세 조회
|
|
|
|
```bash
|
|
curl -fsS --get 'https://k-skill-proxy.nomadamas.org/v1/data4library/book-detail' \
|
|
--data-urlencode 'isbn13=9788971998557' \
|
|
--data-urlencode 'loaninfoYN=Y'
|
|
```
|
|
|
|
`loaninfoYN=Y`는 upstream이 제공하는 대출 관련 추가 정보를 함께 요청한다.
|
|
|
|
### 3) 소장 도서관 조회
|
|
|
|
```bash
|
|
curl -fsS --get 'https://k-skill-proxy.nomadamas.org/v1/data4library/libraries-by-book' \
|
|
--data-urlencode 'isbn=9788971998557' \
|
|
--data-urlencode 'region=11' \
|
|
--data-urlencode 'pageNo=1' \
|
|
--data-urlencode 'pageSize=10'
|
|
```
|
|
|
|
`region`은 도서관 정보나루 지역코드다. 상세 지역코드가 있으면 `dtl_region`을 추가한다.
|
|
|
|
### 4) 특정 도서관 소장/대출 가능 여부 확인
|
|
|
|
```bash
|
|
curl -fsS --get 'https://k-skill-proxy.nomadamas.org/v1/data4library/book-exists' \
|
|
--data-urlencode 'libraryCode=111001' \
|
|
--data-urlencode 'isbn13=9788971998557'
|
|
```
|
|
|
|
### 5) 도서관 목록 조회(선택)
|
|
|
|
```bash
|
|
curl -fsS --get 'https://k-skill-proxy.nomadamas.org/v1/data4library/library-search' \
|
|
--data-urlencode 'region=11' \
|
|
--data-urlencode 'pageNo=1' \
|
|
--data-urlencode 'pageSize=10'
|
|
```
|
|
|
|
## 프록시 응답 공통 메타
|
|
|
|
프록시는 JSON 응답에 다음 메타를 덧붙인다.
|
|
|
|
- `query`: 정규화된 요청값
|
|
- `proxy.name`: 프록시 이름
|
|
- `proxy.cache.hit`: 캐시 hit 여부
|
|
- `proxy.cache.ttl_ms`: 캐시 TTL
|
|
- `proxy.requested_at`: 요청 시각
|
|
|
|
## 파라미터 요약
|
|
|
|
| 엔드포인트 | 필수 쿼리 | 선택 쿼리 |
|
|
| --- | --- | --- |
|
|
| `/v1/data4library/book-search` | `keyword`(`q`, `query`) | `pageNo`, `pageSize` |
|
|
| `/v1/data4library/book-detail` | `isbn13` | `loaninfoYN=Y|N` |
|
|
| `/v1/data4library/libraries-by-book` | `isbn`, `region` | `dtl_region`, `pageNo`, `pageSize` |
|
|
| `/v1/data4library/book-exists` | `libraryCode`, `isbn13` | - |
|
|
| `/v1/data4library/library-search` | - | `region`, `dtl_region`, `libraryCode`, `pageNo`, `pageSize` |
|
|
|
|
## 자주 보는 필드
|
|
|
|
- `bookname`: 도서명
|
|
- `authors`: 저자
|
|
- `publisher`: 출판사
|
|
- `publication_year`: 출판연도
|
|
- `isbn13`: ISBN
|
|
- `libCode`: 도서관 코드
|
|
- `libName`: 도서관명
|
|
- `address`: 도서관 주소
|
|
- `hasBook`, `loanAvailable`: 특정 도서관 소장/대출 가능 여부(응답에 있는 경우)
|
|
|
|
## 실패/주의 사항
|
|
|
|
- `DATA4LIBRARY_AUTH_KEY`가 프록시 서버에 없으면 `503 upstream_not_configured`가 반환된다.
|
|
- ISBN은 하이픈을 제거했을 때 ISBN-10(마지막 X 허용) 또는 ISBN-13이어야 한다.
|
|
- Data4Library 데이터와 개별 도서관 대출 상태는 동기화 지연이 있을 수 있다. 방문 전 도서관 홈페이지나 전화로 최종 확인을 권한다.
|
|
- 지역코드·도서관 코드가 불명확하면 임의로 고르지 말고 후보를 제시한다.
|
|
|
|
## 참고 링크
|
|
|
|
- 도서관 정보나루 Open API 활용방법: `https://www.data4library.kr/apiUtilization`
|
|
- 프록시 구현·엔드포인트 목록: [k-skill 프록시 서버 가이드](k-skill-proxy.md)
|