API제공

개요

DataStore는 전체 파일을 먼저 다운로드하지 않고도 데이터를 읽고 검색하고 필터링 할 수있는 API를 제공합니다. DataStore는 임시 데이터베이스이므로 관계가 알 수없는 테이블의 모음입니다. 이를 통해 하나의 DataStore 리소스(데이터베이스 의테이블)와 DataStore 리소스에 대한 쿼리 를 검색 할 수 있습니다 .

API를 통해 데이터를 DataStore에 증 분식으로 쓸 수 있습니다. 새 데이터를 삽입하거나 기존 데이터를 업데이트하거나 삭제할 수 있습니다. DataStore 리소스에 이미 일부 데이터가 포함되어 있어도 기존 테이블에 새 열을 추가 할 수도 있습니다.

유효성 검사를 시행하고 로드 될 때 데이터를 정리하거나 기록을 기록하기 위해 트리거를 추가 할 수 있습니다.

DataStore API 요청하기

DataStore API 요청을 작성하는 것은 Action API 요청을 작성하는 것과 같습니다. HTTP POST 요청의 JSON 사전을 API URL에 게시하고 API는 JSON 사전으로 응답을 리턴합니다.

엔드포인트

데이터 API는 Action API의 다음 액션들을 통해 접근할 수 있습니다.

데이터 API는 CKAN 액션 API의 다음 액션들을 통해 접근할 수 있습니다.

구분

엔드포인트

생성하기

http://localhost/api/3/action/datastore_create

업데이터/추가

http://183.111.79.18/api/3/action/datastore_upsert

질의

http://183.111.79.18/api/3/action/datastore_search

질의(via SQL)

http://183.111.79.18/api/3/action/datastore_search_sql

질의하기

  • 질의 예제(첫 5개 결과)

    http://localhost/api/3/action/datastore_search?resource_id=7a0ada36-f828-4ef6-a8d7-86f6f604fef9&limit=5

  • 질의 예제 (‘jones’을 포함하는 결과)

    http://localhost/api/3/action/datastore_search?resource_id=7a0ada36-f828-4ef6-a8d7-86f6f604fef9&q=jones

  • 질의 예제 (via SQL 문)

    http://localhost/api/3/action/datastore_search_sql?sql=SELECT * from "7a0ada36-f828-4ef6-a8d7-86f6f604fef9" WHERE title LIKE 'jones'

Javascript example

  • jQuery를 이용한 데이터 API에 간단한 ajax (JSONP) 요청

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
var data = {
  resource_id: '7a0ada36-f828-4ef6-a8d7-86f6f604fef9', // the resource id
  limit: 5, // get 5 results
  q: 'jones' // query for 'jones'
};
$.ajax({
  url: 'http://localhost/api/3/action/datastore_search',
  data: data,
  dataType: 'jsonp',
  success: function(data) {
    alert('Total results found: ' + data.result.total)
  }
});

Python example

  • Python에서 데이터요청 API

1
2
3
4
import urllib
url = 'http://localhost/api/3/action/datastore_search?resource_id=7a0ada36-f828-4ef6-a8d7-86f6f604fef9&limit=5&q=title:jones'
fileobj = urllib.urlopen(url)
print fileobj.read()