csv的即时json api
csvapi的Python项目详细描述
CSVAPI
“立即”发布一个在互联网上任何地方托管的csv的api。也支持Excel文件。
安装
需要python 3.6+和一个带有file
命令的unix操作系统。
python3 -m venv pyenv && . pyenv/bin/activate
pip install csvapi
用于开发:
pip install -r requirements/develop.pip pip install -e .
快速启动
csvapi serve -h 0.0.0.0 -p 8000
命令行选项
$ csvapi serve --help Usage: csvapi serve [OPTIONS] Options: --ssl-key TEXT Path to SSL key --ssl-cert TEXT Path to SSL certificate -w, --max-workers INTEGER Max number of ThreadPoolExecutor workers --cache / --no-cache Do not parse CSV again if DB already exists --reload Automatically reload if code change detected --debug Enable debug mode - useful for development -p, --port INTEGER port for server, defaults to 8001 -h, --host TEXT host for server, defaults to 127.0.0.1 --dbs DIRECTORY Where to store sqlite DBs --help Show this message and exit.
展开
使用ssl,使用Hypercorn:
hypercorn csvapi.webservice:app -b 0.0.0.0:443 --keyfile key.pem --ca-certs cert.pem
有关更多选项,请参见the documentation。
可以使用环境变量CSVAPI_CONFIG_FILE
指向自定义配置文件。
API使用
转换
/apify?url=http://somewhere.com/a/file.csv
这会将csv转换为sqlite数据库(w/agate
),并返回以下响应:
{"ok":true,"endpoint":"http://localhost:8001/api/cde857960e8dc24c9cbcced673b496bb"}
参数
查询字符串中可以使用一些参数。
encoding
默认值:自动检测
您可以使用此参数强制编码(例如utf-8
),而不是依赖于自动检测。
数据api
这是前一个响应的endpoint
属性。
/api/<md5-url-hash>
这将查询先前转换的api文件并返回前100行,如下所示:
{"ok":true,"rows":[[],[]],"columns":[],"query_ms":1}
参数
查询字符串中可以使用一些参数。
_size
默认值:100
这会将查询限制为一定数量的行。例如,仅获取250行:
/api/<md5-url-hash>?_size=250
_sort
和_sort_desc
使用它们按列排序。sort
将按升序排序,sort_desc
按降序排序。
/api/<md5-url-hash>?_sort=<column-name>
_offset
使用此选项可添加偏移量。它与_size
结合使用,允许分页。
/api/<md5-url-hash>?_size=1&_offset=1
_shape
默认值:lists
参数_shape
用于指定json的格式输出。它可以使用值objects
来获取对象数组,而不是数组数组:
/api/<md5-url-hash>?_shape=objects
例如,不返回:
{"ok":true,"query_ms":0.4799365997,"rows":[[1,"Justice","0101",57663310],[2,"Justice","0101",2255129],[3,"Justice","0101",36290]],"columns":["rowid","Mission","Programme","Consommation de CP"]}
它将返回:
{"ok":true,"query_ms":2.681016922,"rows":[{"rowid":1,"Mission":"Justice","Programme":"0101","Consommation de CP":57663310},{"rowid":2,"Mission":"Justice","Programme":"0101","Consommation de CP":2255129},{"rowid":3,"Mission":"Justice","Programme":"0101","Consommation de CP":36290}],"columns":["rowid","Mission","Programme","Consommation de CP"]}
_rowid
默认值:show
参数_rowid
用于显示或隐藏返回数据中的行ID。使用_rowid=hide
隐藏。
/api/<md5-url-hash>?_shape=objects&_rowid=hide
{"ok":true,"query_ms":2.681016922,"rows":[{"Mission":"Justice","Programme":"0101","Consommation de CP":57663310},{"Mission":"Justice","Programme":"0101","Consommation de CP":2255129},{"Mission":"Justice","Programme":"0101","Consommation de CP":36290}],"columns":["Mission","Programme","Consommation de CP"]}
_total
默认值:show
参数_total
用于显示或隐藏返回数据中的总行数(与分页无关)。使用_total=hide
隐藏。
{"ok":true,"query_ms":2.681016922,"rows":[{"Mission":"Justice","Programme":"0101","Consommation de CP":57663310},{"Mission":"Justice","Programme":"0101","Consommation de CP":2255129},{"Mission":"Justice","Programme":"0101","Consommation de CP":36290}],"columns":["Mission","Programme","Consommation de CP"],"total":3}
学分
灵感来自优秀的Datasette。
更改日志
0.0.9(2019-01-18)
- 升级至quart-0.6.6和hypercorn-0.4.6#16
0.0.8(2018-10-04)
- 如果CSV嗅探失败,请尝试在嗅探后解析CSV w/o嗅探(Excel方言)
0.0.7(2018-09-17)
0.0.6(2018-09-10)
- 计算表中的行总数#12
0.0.5(2018-09-10)
- 将csv sniff limit设为配置变量并提高默认值#11
- 正确处理未找到(404)错误
0.0.4(2018-09-04)
- 强制SSL配置变量
0.0.3(2018-08-31)
- 通过SENTRY DSN配置变量提供的岗哨支持
0.0.2(2018-08-30)
- csvapi_config_file env var支持
0.0.1(2018-08-30)
- 初始版本