2015-01-20 4 views
4

Я хотел бы спросить, как я могу расширить API CKAN, написав собственное расширение для CKAN. Я не мог найти ничего в документации. Не могли бы вы привести простой пример?Как я могу расширить API CKAN?

+0

Не могли бы вы дать мне точную ссылку, пожалуйста? – Kapucko

+0

Я хочу иметь возможность называть что-то вроде: http: //myckan.org/api/3/action/myaction? Par1 = .... – Kapucko

ответ

8

В защите ОП документация выглядит немного непрозрачной. Я смотрел на это в попытке получить действие пользовательского API для подачи JSON ленты новостей на работу, и, наконец, пришел с этим:

import ckan.plugins as plugins 
import ckan.plugins.toolkit as toolkit 

# Required so that GET requests work 
@toolkit.side_effect_free 
def get_news(context,data_dict=None): 
    # The actual custom API method 
    return {"hello":"world"} 


class CustomAPIPlugin(plugins.SingletonPlugin): 
    plugins.implements(plugins.interfaces.IActions) 

    def get_actions(self): 
    # Registers the custom API method defined above 
    return {'get_news': get_news} 

В учебнике, который описывает создание плагина аутентификации здесь:

http://docs.ckan.org/en/latest/extensions/tutorial.html#creating-a-new-extension

что я сделал это плагиатом, но с использованием IActions, а не IAuthFunctions:

http://docs.ckan.org/en/latest/extensions/plugin-interfaces.html

Работает над установкой CKAN 2.2.1.

+0

хороший пример, спасибо за защиту. – Kapucko

Смежные вопросы