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}