API

Python应用可以在自己的工作流中集成 pycsw 。这样就允许在 Flask与 Django 这样的框架中无缝集成

下面是一些使用API的示例(相对于默认的WSGI/CGI服务,可以使用:

  • 基于Python字典 进行配置,或存储在数据库中
  • 下游请求环境/框架(Flask,Django)
  • 认证或授权逻辑
  • 强制使用 CSW 版本2.0.2作为默认值

简单的 Flask 示例

import logging

from flask import Flask, request

from pycsw import __version__ as pycsw_version
from pycsw.server import Csw

LOGGER = logging.getLogger(__name__)
APP = Flask(__name__)

@APP.route('/csw')
def csw_wrapper():
    """CSW wrapper"""

    LOGGER.info('Running pycsw %s', pycsw_version)

    pycsw_config = some_dict  # really comes from somewhere

    # initialize pycsw
    # pycsw_config: either a ConfigParser object or a dict of
    # the pycsw configuration
    #
    # env: dict of (HTTP) environment (defaults to os.environ)
    #
    # version: defaults to '3.0.0'
    my_csw = Csw(pycsw_config, request.environ, version='2.0.2')

    # dispatch the request
    http_status_code, response = my_csw.dispatch_wsgi()

    return response, http_status_code, {'Content-type': csw.contenttype}